Czwarty kwartał to dla większości sklepów e-commerce 40-60% rocznego obrotu. Black Friday, Cyber Monday i świąteczne zakupy tworzą ruch wielokrotnie przekraczający średnią. Sklepy, które nie przygotowały się technicznie, tracą zamówienia nie na rzecz konkurencji – po prostu nie wytrzymują obciążenia. Poniżej lista kontrolna, którą przechodzę z klientami przed każdym sezonem.
Własna siatka administracyjna (admin grid) w Magento 2 to zadanie, które pojawia się przy każdym większym module. Magento dostarcza tu cały UI Component framework – deklaratywny XML definiuje kolumny, filtry i akcje, a PHP dostarcza tylko DataProvider. Pokazuję minimalny, ale kompletny przykład od migracji bazy przez model po listing.xml.
Wzorzec Iterator definiuje sposób sekwencyjnego dostępu do elementów kolekcji bez ujawniania jej wewnętrznej struktury. PHP implementuje go przez interfejsy Iterator i IteratorAggregate. Generatory (dostępne od PHP 5.5) to składniowy cukier który znacznie upraszcza pisanie iteratorów – szczególnie przy leniwym generowaniu dużych zbiorów danych.
Dynamic programming to technika rozwiązywania problemów przez rozbicie ich na mniejsze podproblemy i zapamiętanie wyników. W PHP stosuje się ją rzadziej niż w językach niskopoziomowych, ale pojawia się wszędzie tam gdzie naiwna rekursja jest za wolna. Pokazuję dwa podejścia: memoizację (top-down) i tabulację (bottom-up) na kilku konkretnych przykładach.
Magento 2 Command pattern z Message Queue to połączenie dwóch mechanizmów: Command enkapsuluje operację jako obiekt, a Message Queue wykonuje ją asynchronicznie. W praktyce: zamiast wysyłać email synchronicznie w żądaniu HTTP (blokując odpowiedź), wrzucasz wiadomość do kolejki i konsumer obsłuży ją w tle. Pokażę jak to wdrożyć na przykładzie powiadomień o zamówieniu.
PHP 8.4 jest dostępny od listopada 2024. Przynosi property hooks – natywną implementację getterów i setterów bez boilerplate, asymetryczną widoczność właściwości (public private(set)), nowe funkcje tablic i deprecację funkcji które nie były dotykane od PHP 4. To ewolucja która pozwala pisać bardziej zwięzły kod bez rezygnacji z enkapsulacji.
Xdebug 3 zmienił model konfiguracji w stosunku do wersji 2 – jedna dyrektywa xdebug.mode zastępuje kilkanaście ustawień. W połączeniu z DDEV konfiguracja debugowania dla Magento 2 jest teraz znacznie prostsza niż była 3 lata temu. Pokażę jak uruchomić step debugger w PHPStorm i VS Code, w tym debugowanie requestów HTTP, CLI i testów jednostkowych.
Magento 2 ma wbudowany system Service Contracts oparty na interfejsach i Data Interfaces. Zamiast wstrzykiwać modele bezpośrednio, wstrzykujesz interfejsy Repository i Data Interface. To nie tylko dobre praktyki – to jedyny sposób żeby moduł działał stabilnie po aktualizacjach i był kompatybilny z innymi modułami. Pokażę jak poprawnie używać Service Contracts na przykładzie katalogu produktów.
Wzorzec Proxy kontroluje dostęp do innego obiektu. Klient myśli że rozmawiał z prawdziwym obiektem, a w rzeczywistości rozmawiał z pośrednikiem który może dodać cache, logowanie, lazy loading, kontrolę dostępu albo zdalny dostęp. W Magento 2 Proxy to wbudowany mechanizm – każda klasa z sufiksem \Proxy w kontenerze DI to właśnie ten wzorzec.
Tablica haszująca (hash table) to struktura danych z O(1) dla wstawiania, wyszukiwania i usuwania w przypadku średnim. PHP używa jej wewnętrznie dla tablic – każda tablica PHP to de facto hash mapa. Ale wiedza o tym jak działa pod spodem pozwala pisać wydajniejszy kod i rozumieć dlaczego pewne operacje są szybkie a inne zaskakująco wolne.
