Visitor to jeden z trudniejszych wzorców GoF do zrozumienia, ale rozwiązuje bardzo konkretny problem: chcesz dodać nową operację do grupy powiązanych klas bez modyfikowania tych klas. Zamiast dodawać metodę do każdej klasy, tworzysz Visitora który „odwiedza” każdą z nich. Szczególnie przydatny przy AST (drzewach składniowych), formatowaniu danych i eksporcie do różnych formatów.
Luma – domyślny motyw Magento 2 – ma poważny problem z wydajnością. Dziesiątki plików JS, jQuery, RequireJS, knockout.js i plik CSS liczący setki KB. Hyvä (wymawiane „hiuva”, po fińsku „dobry”) to alternatywny motyw który wyrzuca ten stack i zastępuje go Alpine.js i Tailwind CSS. Wyniki PageSpeed skaczą z 30-40 do 90+. Pokazuję architekturę i jak zacząć.
PHP 8.4 planowane jest na listopad 2024 i ma przynieść dwie zmiany które zmienią sposób pisania klas PHP – property hooks i asymmetric visibility. Property hooks to coś czego brakowało od lat: możliwość definiowania logiki get/set bezpośrednio przy właściwości, bez osobnych metod. Asymmetric visibility pozwala na readonly-like zachowanie z możliwością wewnętrznej modyfikacji. Przeglądam RFC które przeszły głosowanie.
Checkout w Magento 2 to jeden z najtrudniejszych obszarów do customizacji – głęboko zagnieżdżony JSON konfiguracji knockout.js, wielowarstwowe mixiny JavaScript i kilkanaście kroków przetwarzania po stronie PHP. Pokazuję jak dodać własne pole do formularza checkout, własną walidację i jak zmodyfikować kroki procesu bez rozbijania istniejącej funkcjonalności.
PHP 8.3 wyszło oficjalnie 23 listopada 2023. W maju pisałem o zapowiedziach – teraz mam kilka dni na sprawdzenie finalnej wersji. Nie ma tu rewolucji jak w PHP 8.0 czy enumów z 8.1, ale kilka zmian wchodzi do codziennego kodu od razu. Typed constants i json_validate() to te które stosuję natychmiast.
Pytanie „WooCommerce czy Magento 2” wraca regularnie przy każdym nowym projekcie e-commerce. Zwykle odpowiedź jest prosta gdy znasz skalę i budżet. Ale jako developer Magento warto rozumieć WooCommerce od środka – bo klienci pytają, bo czasem projekt tego wymaga, i bo porównanie architektur uczy więcej niż tysiąc tutoriali o jednym frameworku.
GraphQL w Magento 2 pisałem o w lutym 2020. Teraz czas na krok dalej – GraphQL Federation, czyli sposób łączenia wielu niezależnych serwisów GraphQL w jeden spójny supergraf. Gdy architektura mikroserwisów spotyka się z headless commerce, Federation staje się kluczowym narzędziem. Pokazuję architekturę, implementację gateway’a i subgrafów w PHP.
W maju 2021 pisałem o BFS i DFS dla grafów bez wag. Czas na algorytm Dijkstry – klasyczny algorytm znajdowania najkrótszej ścieżki w grafie z wagami nieujemnymi. Pojawia się wszędzie tam gdzie „najkrótsza” nie oznacza „najmniej kroków”, ale „najmniejszy koszt” – routing, optymalizacja dostaw, recommendation engines.
PageBuilder to wizualny edytor stron wbudowany w Magento 2.3.1+. Klienci go kochają – przeciągają bloki, edytują treści bez HTML. Developerzy mają mieszane uczucia – architektura jest złożona, debugowanie nieintuicyjne. Pokazuję jak dodać własny typ zawartości od zera, jak rozszerzyć istniejące typy i czego unikać przy wdrożeniu.
Wzorzec State pozwala obiektowi zmieniać swoje zachowanie gdy zmienia się jego wewnętrzny stan. Z zewnątrz wygląda jakby obiekt zmienił klasę. Jeśli masz klasę z rosnącym if-else który sprawdza „w jakim stanie jestem przed każdą operacją” – to klasyczny kandydat na refaktoring do wzorca State. Implementuję maszynę stanów dla zamówienia e-commerce.
