PHP 8.1 wyszło w grudniu 2021. Mam za sobą kilka miesięcy używania enumeracji, readonly properties i intersection types w projektach produkcyjnych. Czas na uczciwe podsumowanie: co weszło do kodu naturalnie, co zaskakuje i gdzie są granice tych nowości w kontekście Magento 2 i starszych baz kodu.
Chain of Responsibility pozwala przekazywać żądanie przez łańcuch handlerów, gdzie każdy może je obsłużyć lub przekazać dalej. Eliminuje rozbudowane if-else i switch decydujące „kto powinien to obsłużyć”. W Magento 2 ten wzorzec pojawia się w pipeline przetwarzania płatności, middleware HTTP i systemie reguł cenowych. Pokazuję implementację od zera i praktyczne zastosowania.
Redis jest de facto standardem w produkcyjnych wdrożeniach Magento 2. Zastępuje cache plikowy, obsługuje sesje i może działać jako backend Full Page Cache. Każdy z tych przypadków wymaga osobnej instancji lub bazy Redis z inną konfiguracją. Pokazuję jak to prawidłowo skonfigurować, dlaczego oddzielne instancje mają znaczenie i jak monitorować Redis w środowisku Magento.
Programowanie dynamiczne (DP) to technika rozwiązywania problemów przez rozbicie ich na podproblemy i zapamiętywanie wyników aby nie liczyć ich wielokrotnie. Brzmi abstrakcyjnie, ale w praktyce stosujesz DP kiedy piszesz cache dla kosztownej operacji albo szukasz optymalnego zestawu produktów do oferty. Pokazuję dwa klasyczne problemy z implementacją w PHP.
PHP 8.1 wychodzi w grudniu 2021 i przynosi kilka zmian które od razu wchodzą do codziennego kodu. Enumy to chyba największa nowość od lat – nareszcie natywne typy wyliczeniowe bez obejść przez stałe i klasy. Do tego readonly properties, intersection types i never return type. Przeglądam co jest gotowe do użycia od razu, a co wymaga ostrożności przy integracji z Magento 2.
PimCore to platforma open source oparta na Symfony, która łączy w jednym narzędziu CMS, DAM (zarządzanie zasobami cyfrowymi) i PIM (zarządzanie informacją produktową). W przeciwieństwie do Akeneo, które jest dedykowanym PIMem, PimCore jest bardziej universalny – możesz zbudować w nim zarówno stronę korporacyjną, jak i katalog produktowy zasilający sklep Magento. Pokazuję architekturę i pierwsze kroki z perspektywy PHP developera.
Każdy deploy robiony ręcznie przez SSH to potencjalne źródło błędu. GitHub Actions pozwala zautomatyzować testy, analizę statyczną i wdrożenie – bezpłatnie dla publicznych repozytoriów, z hojnym limitem dla prywatnych. Pokazuję jak zbudować pipeline CI/CD dla projektu PHP i modułu Magento 2 od zera.
Proxy to wzorzec który stawia pośrednika między klientem a prawdziwym obiektem. Pośrednik implementuje ten sam interfejs co oryginał, więc klient nie widzi różnicy – a Proxy może robić coś dodatkowego: opóźniać inicjalizację, kontrolować dostęp, logować wywołania lub keszować wyniki. W Magento 2 Proxy jest generowane automatycznie dla klas z ciężkimi konstruktorami.
UI Components to jeden z bardziej zagadkowych elementów Magento 2. Siatki danych w panelu admina, formularze edycji, filtry – wszystko to jest zbudowane na UI Components. Dokumentacja Magento jest tu wyjątkowo skąpa, a debugowanie bywa frustrujące. Pokazuję jak to działa od środka i jak napisać własną siatkę danych z filtrowaniem.
W maju pisałem o Vue.js. React to drugi popularny wybór przy projektach headless Magento i PWA. Różni się od Vue filozoficznie – mniej „magii”, więcej jawnego JavaScriptu, JSX zamiast szablonów HTML. Dla PHP developera React wymaga przestawienia myślenia, ale gdy już kliknie – jest bardzo przewidywalny. Pokazuję podstawy z perspektywy kogoś kto na co dzień pisze PHP.
