SymfonyWorld 2020: podsumowanie
Kilka słów podsumowujących konferencję Symfony World 2020. Krótko o wybranych prelekcjach, odbiorze i organizacji.
Minęło już trochę czasu od Symfony World 2020, a ja dopiero piszę podsumowanie. Nigdy tego nie potrafiłem. Wszelkie przemyślenia na temat konferencji czy prelekcji zostawiałem dla siebie. Tym razem spróbuję inaczej, dzieląc się spostrzeżeniami na temat wybranych wystąpień i samej konferencji.
Organizacja Symfony World 2020
Event odbył się na platformie Hopin. Wszystko pod ręką – prelekcje, rozkład jazdy, ścieżki tematyczne, miejsce dla sponsorów. Nawet opcja „networkingu”, gdzie dwie losowe osoby mogły się połączyć na żywo, porozmawiać i wymienić się spostrzeżeniami. Drobne problemy technicznie nie przeszkodziły w pozytywnym odbiorze konferencji.
Wszystkie prelekcje zostały nagrane przed rozpoczęciem konferencji, aby zapewnić jej płynny przebieg. Po zakończeniu wykładu (a często też przed), prelegenci byli dostępni i gotowi na pytania czy dorzucenie kilku informacji. Tutaj bez zmian, w porównaniu z konferencjami „on site”.
Symfony UX
Autorzy: Fabien Potencier i Titouan Galopin
Kluczowe elementy:
- Komponenty, które wpływają na DX podczas pracy z Symfony.
- Wiesz, że HttpKernelInterface nie zmienił się od 10 lat?
- Symfony UX – vanilla JS, SEO friendly i nadal kompatybilne z VueJS/React i innymi.
- Stimulus pozwala na proste odwołanie się do elementów HTML w JS.
Zaczęło się od zaprezentowania nowego dziecka: Symfony UX. Nareszcie jakieś narzędzie, które nie jest
Reactem, Vue czy innym Angularem. Przyznaję, z początku byłem dość sceptycznie nastawiony. No bo po co mam używać
jakiegoś dodatkowego narzędzia, skoro wystarczy mi stare dobre document.querySelector
? Ale Symfony UX to nie tylko JS.
To też połączenie między komponentami PHP i JS. Pod maską wszystkim steruje Stimulus.
Na dzień dobry otrzymaliśmy 5 komponentów:
- UX Chart.js: integracja biblioteki do wykresów Chart.js
- UX Cropper.js: integracja biblioteki do przycinania obrazków Cropper.js
- UX Dropzone: drag-and-drop plików w formularzach Symfony
- UX LazyImage: lazy loading obrazków i generowanie placeholderów z wykorzystaniem BlurHash jako funkcja Twig
- UX Swup: integracja biblioteki do płynnych przejść między podstronami Swup. Takie SPA dla biednych 🙂
I tu muszę przyznać, że połączeniem LazyImage, Dropzone i Cropper mnie kupili. No ale nie byłbym sobą, gdybym nie spróbował czegoś zrobić sam. Stwierdziłem, że skoro najprawdopodobniej będę już z tego z wymienionymi komponentami, to dlaczego czegoś nie napisać? Na pierwszy ogień poszedł prosty dropdown. Wiem, że jest już kilka implementacji z wykorzystaniem Stimulusa, ale chodziło o naukę… You know, for science!
import { Controller } from 'stimulus';
export default class extends Controller {
static targets = ['dropdown'];
isVisible = false;
toggle() {
this.dropdownTarget.style.display = this.isVisible ? 'none' : 'block';
this.isVisible = !this.isVisible;
}
hide(e) {
if (!this.element.contains(e.target) && this.isVisible) {
this.toggle();
}
}
}
<button data-action="dropdown#toggle click@window->dropdown#hide">
{{ user.name }}
</button>
<div style="display: none" data-target="dropdown.dropdown">
<a href="/logout">Logout</a>
</div>
10, no może 20 linijek i mamy dropdown, który można wpiąć w dowolnym miejscu. Nic, czego nie można osiągnąć za pomocą czystego JS w podobnym czasie. Po prostu ładnie opakowane.
Nowe Symfony Security
Autor: Ryan Weaver
Kluczowe elementy:
- Koniec z anonymous user i IS_AUTHENTICATED_ANONYMOUSLY!
- Koniec kombinowania, czy coś jest w Auth Listener, Auth Manager czy Auth Provider.
- Prostsza integracja 2FA.
- Magic login links.
Od wersji Symfony 5.1 dostępny jest nowy system Security. Nowy i uproszczony. Od dawna chciałem przejść ze starego
systemu na nowy i opisać to na blogu, ale nie było czasu i chęci na czytanie dokumentacji zmian. 30 minut na prelekcji i
wieczorem wdrożyłem. Koniec z pisaniem 3 klas odpowiedzialnych za logowanie użytkownika. Teraz wszystko można zmieścić w
1 klasie. Co ważne, nie ma już IS_AUTHENTICATED_ANONYMOUSLY
🙌. Teraz w listach dostępu można stosować
PUBLIC_ACCESS
.
DDD dla początkujących
Autor: Neal Brooks
Kluczowe elementy:
- Przystępne wyjaśnienie aggregate, aggregate root czy bounded context.
- Przyjemne i łatwe w zrozumieniu przykłady.
Nie ma czegoś takiego, jak „szablon DDD dla mojej aplikacji”. Jednak dla kogoś, kto zna DDD tylko z teorii, przedstawienie tego w taki sposób, jak zrobił to Neal może być gamechangerem. Maksymalnie uproszczony projekt, wyjaśnienie bounded context, aggregate i aggregate root, podział na komendy i handlery, wyodrębnienie domeny, logiki. Wszystko na tacy.
Kod, który powstał do dema w prezentacji dostępne jest na GitHub.
Podsumowanie
Mimo tego, że dużo informacji na konferencji powielało się już z moją wiedzą, nie żałuję wzięcia udziału. Nawet gdy wydaje mi się, że świetnie znam temat, coś może mnie zaskoczyć. Podobała mi się każda prelekcja, w której wziąłem udział (może po prostu dobrze trafiłem?).
Wszystkie prelekcje dostępne są dla uczestników na stronie replays.
A na koniec, kilka dni po Symfony World 2020 został ogłoszony plan SymfonyTour na pierwsze półrocze 2021 roku. Kolejna edycja World już w czerwcu, a po drodze 4 edycje lokalne (czyli odpowiedniki SymfonyLive), w tym SymfonyLive Online Poland 2021. Własny wykład nigdy nie był tak blisko…