PHP / Magento Dev Blog

  • Publikacje
  • O autorze
  • Kontakt

Podsumowanie 2025 – pipe operator, Hyvä mainstream, AI tooling obowiązkowy, 120 wpisów

  • 0
Henryk Tews
wtorek, 30 grudnia 2025 / Opublikowano w Magento 2, PHP

Ostatni wpis roku 2025 i zarazem siódma rocznica bloga. Lipiec 2018 – grudzień 2025 to 120 wpisów i siedem lat zmian w ekosystemie PHP i Magento 2. W tym roku PHP 8.5 z pipe operatorem, Hyvä jako defacto standard dla nowych sklepów, AI tools które stały się częścią codziennego workflow każdego developera PHP, i rosnąca popularność headless Magento z Next.js. Podsumowanie bez marketingowego bałaganu.

(więcej…)

Iterator i Generator – leniwe przetwarzanie, yield, IteratorAggregate, benchmark pamięci

  • 0
Henryk Tews
wtorek, 02 grudnia 2025 / Opublikowano w Wzorce projektowe

Gdy masz 100 000 zamówień do eksportu albo milion wierszy do importu, wczytanie wszystkiego do tablicy to pewna śmierć przez wyczerpanie pamięci. PHP oferuje dwa eleganckie mechanizmy leniwego przetwarzania: interfejs Iterator dla klas które sami piszemy i Generator (yield) dla prostszego kodu który nie wymaga całej klasy. Pokazuję oba z praktycznymi przykładami z Magento 2.

(więcej…)

Extension Attributes – pełna implementacja z batch loadingiem, REST API, testy

  • 0
Henryk Tews
wtorek, 18 listopada 2025 / Opublikowano w Magento 2

Extension Attributes to jeden z najbardziej eleganckich mechanizmów Magento 2 który pozwala dodawać pola do istniejących encji (produkty, zamówienia, klienci) bez modyfikowania ich tabel ani klas. Zamiast tego deklarujesz atrybuty w XML, implementujesz plugin do ładowania i zapisywania danych, i Magento automatycznie dołącza je do odpowiedzi REST API i GraphQL. Pokazuję kompletną implementację krok po kroku.

(więcej…)

PHP 8.5 RC1 – pipe operator w realnym kodzie, pułapki, readonly dziedziczenie potwierdzone

  • 0
Henryk Tews
wtorek, 02 września 2025 / Opublikowano w PHP

PHP 8.5 RC1 wyszło w sierpniu 2025. Przez ostatnie tygodnie testowałem na kilku projektach. Pipe operator działa dokładnie tak jak RFC obiecywało – i zmienia sposób pisania przetwarzania danych bardziej niż jakikolwiek feature od czasu match() w PHP 8.0. Ale RC1 przyniosło też kilka niespodzianek których nie było w RFC drafcie. Raport z pierwszych tygodni.

(więcej…)

DDEV zaawansowany – mutagen, własne serwisy, hooks, współdzielona konfiguracja w teamie

  • 0
Henryk Tews
czwartek, 21 sierpnia 2025 / Opublikowano w Środowiska

Pisałem o DDEV w 2018 jako o narzędziu do stawiania Magento lokalnie. Przez 7 lat stało się moim domyślnym środowiskiem do każdego projektu PHP. Ale większość developerów używa tylko podstaw: ddev start, ddev ssh, ddev exec. Pokazuję zaawansowane możliwości które realnie wpływają na komfort pracy: mutagen dla wydajności na macOS, własne usługi w docker-compose, współdzielone konfiguracje w teamie i hooks automatyzujące setup.

(więcej…)

Migracja danych prod → dev – mydumper, anonimizacja RODO, hooks automatyzujące setup

  • 0
Henryk Tews
wtorek, 05 sierpnia 2025 / Opublikowano w Magento 2

Każdy developer Magento 2 zna ten problem: produkcyjna baza danych ma 50GB, czas importu 3 godziny, a po imporcie konfiguracja wskazuje na produkcyjne URL-e i tokeny. Pokazuję kompletny workflow: jak wyciągnąć użyteczny dump z produkcji, automatycznie oczyścić dane wrażliwe, zmienić konfigurację środowiskową i skrócić czas importu z godzin do minut.

(więcej…)

PHP Fibers deep dive – własny scheduler, kooperatywna wielozadaniowość, równoległe HTTP

  • 0
Henryk Tews
wtorek, 15 lipca 2025 / Opublikowano w PHP

Fibers weszły do PHP w wersji 8.1 jako niskopoziomowy mechanizm kooperatywnej wielozadaniości. W marcu 2024 pisałem o ReactPHP który buduje na Fibers abstrakcję event loop i async/await. Dziś wchodzę głębiej: jak Fibers działają wewnętrznie, kiedy warto sięgać bezpośrednio do Fiber API bez biblioteki i jak pisać własny prosty scheduler który pozwala równolegle wykonywać zadania w PHP CLI.

(więcej…)

GraphQL batch loading – BatchServiceContractResolverInterface, cache z tagami, N+1

  • 0
Henryk Tews
wtorek, 01 lipca 2025 / Opublikowano w Magento 2

Własny resolver GraphQL w Magento 2 to kilka plików konfiguracyjnych i klasa PHP – o tym pisałem już w 2020. Ale gdy resolver pojawia się w produkcji pod ruchem, zaczynają się prawdziwe problemy: N+1 queries przez zagnieżdżone pola, brak cache dla drogich operacji i trudne debugowanie. Pokazuję jak napisać resolver produkcyjnej jakości z batch loadingiem i granularnym cache.

(więcej…)

PHP 8.5 RFC potwierdzony – pipe operator!, readonly dziedziczenie, array_first/last

  • 0
Henryk Tews
wtorek, 15 kwietnia 2025 / Opublikowano w PHP

Zbliżamy się do Feature Freeze PHP 8.5 (latem 2025). Kilka RFC przeszło głosowanie i jest już w masterze. Przeglądam co jest potwierdzone, co jest w ostatniej rundzie głosowania i które propozycje nie zebrały wymaganego 2/3 głosów. Bez spekulacji – tylko potwierdzone zmiany.

(więcej…)

Hyvä vs Luma benchmark – twarde liczby, LCP 3.5x szybszy, k6 load test, konwersja

  • 0
Henryk Tews
wtorek, 01 kwietnia 2025 / Opublikowano w Magento 2

Każda strona marketingowa Hyvä pokazuje PageSpeed 95+ vs Luma 40. Ale jak wygląda to w prawdziwym projekcie z kilkoma tysiącami produktów, kilkudziesięcioma modułami zewnętrznymi i realnym ruchem? Przeprowadziłem benchmark na identycznym projekcie Magento 2.4.8 z dwoma motywami – Luma i Hyvä – na tym samym serwerze, z tym samym stack’iem. Pokazuję liczby.

(więcej…)

  • 1
  • 2
  • 3
  • 4
  • 5
  • Publikacje
  • O autorze
  • Kontakt

© 2026 Created by

GÓRA
Zarządzaj zgodą
Aby zapewnić jak najlepsze wrażenia, korzystamy z technologii, takich jak pliki cookie, do przechowywania i/lub uzyskiwania dostępu do informacji o urządzeniu. Zgoda na te technologie pozwoli nam przetwarzać dane, takie jak zachowanie podczas przeglądania lub unikalne identyfikatory na tej stronie. Brak wyrażenia zgody lub wycofanie zgody może niekorzystnie wpłynąć na niektóre cechy i funkcje.
Funkcjonalne Zawsze aktywne
Przechowywanie lub dostęp do danych technicznych jest ściśle konieczny do uzasadnionego celu umożliwienia korzystania z konkretnej usługi wyraźnie żądanej przez subskrybenta lub użytkownika, lub wyłącznie w celu przeprowadzenia transmisji komunikatu przez sieć łączności elektronicznej.
Preferencje
Przechowywanie lub dostęp techniczny jest niezbędny do uzasadnionego celu przechowywania preferencji, o które nie prosi subskrybent lub użytkownik.
Statystyka
Przechowywanie techniczne lub dostęp, który jest używany wyłącznie do celów statystycznych. Przechowywanie techniczne lub dostęp, który jest używany wyłącznie do anonimowych celów statystycznych. Bez wezwania do sądu, dobrowolnego podporządkowania się dostawcy usług internetowych lub dodatkowych zapisów od strony trzeciej, informacje przechowywane lub pobierane wyłącznie w tym celu zwykle nie mogą być wykorzystywane do identyfikacji użytkownika.
Marketing
Przechowywanie lub dostęp techniczny jest wymagany do tworzenia profili użytkowników w celu wysyłania reklam lub śledzenia użytkownika na stronie internetowej lub na kilku stronach internetowych w podobnych celach marketingowych.
  • Zarządzaj opcjami
  • Zarządzaj serwisami
  • Zarządzaj {vendor_count} dostawcami
  • Przeczytaj więcej o tych celach
Zobacz preferencje
  • {title}
  • {title}
  • {title}