PHP / Magento Dev Blog

  • Publikacje
  • O autorze
  • Kontakt

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

by 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.

PHP 2025 – rok pipe operatora

PHP 8.5 to bez wątpienia największe wydanie roku. Pipe operator po latach dyskusji w końcu wszedł do języka i realnie zmienia styl pisania transformacji danych. Readonly dziedziczenie domknęło logikę Value Objects. Ale rok 2025 to też konsolidacja wcześniejszych zmian:

<?php

declare(strict_types=1);

// Reprezentatywny "nowy PHP" w 2025 - agregat siedmiu lat zmian
class OrderProcessingService
{
    public function __construct(
        private readonly OrderRepositoryInterface $orders,       // PHP 8.0 constructor promotion
        private readonly PricingService $pricing,
        private readonly LoggerInterface $logger
    ) {}

    public function processQueue(array $orderIds): ProcessingResult
    {
        $result = $orderIds
            |> array_filter($$, fn($id) => $id > 0)               // PHP 8.5 pipe
            |> array_map(fn($id) => $this->loadOrder($id), $$)
            |> array_filter($$)
            |> array_filter($$, fn($o) => $o->getStatus() === 'pending')
        ;

        $processed = 0;
        $failed    = [];

        foreach ($result as $order) {
            try {
                $this->process($order);
                $processed++;
            } catch (\Throwable $e) {               // PHP 8.0 - catch bez zmiennej
                $failed[] = $order->getIncrementId();
                $this->logger->error($e->getMessage(), ['order' => $order->getIncrementId()]);
            }
        }

        return new ProcessingResult($processed, $failed); // PHP 8.1 readonly w DTO
    }

    private function loadOrder(int $id): ?OrderInterface
    {
        return $this->orders->get($id) ?? null; // PHP 8.0 nullsafe + null coalescing
    }

    private function process(OrderInterface $order): void
    {
        $discount = match($order->getCustomerGroupId()) {  // PHP 8.0 match
            1 => 0.05,
            2 => 0.10,
            default => 0.0,
        };

        // PHP 8.4 BcMath\Number dla precyzji finansowej
        $total = new \BcMath\Number((string) $order->getGrandTotal());
        $final = $total * new \BcMath\Number((string) (1 - $discount));

        $this->logger->info('Processed', ['total' => (string) $final->round(2)]);
    }
}

Magento 2 w 2025 – Hyvä wygrywa

Najważniejsza zmiana w ekosystemie Magento 2 w 2025: Hyvä Theme stało się domyślnym wyborem dla nowych projektów, a nie „ciekawą alternatywą”. Dane które widzę w projektach:

Metryka Nowe projekty 2023 Nowe projekty 2025
Hyvä jako wybór frontendu ~25% ~70%
Luma (nowe wdrożenia) ~60% ~15%
Headless (PWA/Next.js) ~15% ~15%

Ekosystem modułów kompatybilnych z Hyvä urósł dramatycznie – większość popularnych extension vendorów ma teraz natywne wsparcie. Hyvä Checkout stabilny. Hyvä React (most do React komponentów) otworył nową możliwość – hybryda SSR PHP z React islands pattern.

AI tools – rok w którym stały się obowiązkowe

W 2024 pisałem o AI jako „przydatnym narzędziu”. W 2025 to coś więcej – brak AI tooling w workflow to jak brak autouzupełniania w IDE. Mój aktualny stack:

Zadanie Narzędzie Skuteczność (moja ocena)
Inline code completion GitHub Copilot Wysoka dla boilerplate
Code review diffa Claude API w CI/CD Dobra – wyłapuje oczywiste błędy
Generowanie testów Claude / Copilot Chat Bardzo wysoka
Refaktoring z kontekstem projektu Cursor IDE Dobra przy znajomości projektu
Kod wrażliwy / wewnętrzny Ollama (DeepSeek Coder) Dobra – zero zewnętrznych serwisów
Architektura i decyzje Własna głowa Niezbędna

Trzy rzeczy które zaskoczyły mnie w 2025

1. WebAssembly przez Extism znalazło realne zastosowanie – pisałem o tym w październiku. Dwa projekty gdzie klient chciał własny algorytm wyceny: zamiast eval() lub subprocess – WASM plugin w sandboxie. Eleganckie rozwiązanie które wcześniej nie istniało w PHP ekosystemie.

2. PHP 8.5 pipe operator zmienił więcej niż myślałem – spodziewałem się że to „ładna syntaktyka”. W praktyce zmieniło to jak myślę o strukturze kodu transformacji danych. Zamiast „jaka zmienna pośrednia” myślę „jaki krok pipeline’u”. Subtelna ale realna zmiana.

3. Redis Streams zamiast RabbitMQ w mniejszych projektach – po wpisie z grudnia 2024 wdrożyłem to w dwóch projektach. Dla sklepów gdzie RabbitMQ było over-engineering a MySQL queue za wolny – Redis Streams to idealne middle ground. Zero dodatkowej infrastruktury, wystarczające możliwości.

Co obserwuję na wejście w 2026

  • PHP 8.5 wsparcie w Magento 2.4.9 – spodziewane w Q2-Q3 2026. Po oficjalnym wsparciu pipe operator i readonly dziedziczenie wejdą też do kodu modułów
  • OpenSearch 3.x – nowe możliwości semantic search i vector search dla produktowych rekomendacji
  • AI-native funkcje w Magento – Adobe zapowiedziało głębszą integrację AI w Adobe Commerce. Jak to trafi do Community Edition – do obserwowania
  • PHP 9.0 RFC – pierwsze RFC dla PHP 9 zaczną się pojawiać. Generics? Pattern matching? Czas pokaże
  • FrankenPHP dojrzewanie – worker mode PHP bez restartowania procesu per request dojrzewa. Dla odpowiednich przypadków użycia może zmienić wydajność CLI i prostych serwisów

120 wpisów – dziękuję za lekturę

Siedem lat, 120 wpisów, PHP od 7.2 do 8.5, Magento od 2.2 do 2.4.8. Blog pozostaje moją notatką z tego co aktualnie stosuję w projektach i co uważam za warte zapamiętania. Jeśli któryś wpis oszczędził Ci godziny debugowania albo pokazał nowe podejście do problemu który znasz od lat – to jest najlepszy feedback jaki mogę dostać. Do zobaczenia w 2026.

Podsumowanie roku jednym kodem

<?php

declare(strict_types=1);

// Jeśli musiałbym podsumować 2025 w PHP jedną linią kodu:

$year2025 = [
    'php_8_5',
    'pipe_operator_finally',
    'hyva_mainstream',
    'ai_tooling_mandatory',
    'readonly_inheritance',
    'wasm_via_extism',
]
    |> array_map(fn($feat) => "[✓] {$feat}", $$)
    |> implode("\n", $$)
;

echo $year2025;

// [✓] php_8_5
// [✓] pipe_operator_finally
// [✓] hyva_mainstream
// [✓] ai_tooling_mandatory
// [✓] readonly_inheritance
// [✓] wasm_via_extism

About Henryk Tews

Co możesz przeczytać następne

Typowanie w PHP 7.x, strict_types, PHPStan, przygotowanie na PHP 7.4
PHP 8.2 po premierze – readonly classes w praktyce, deprecacje, Rector, checklist migracji
Trendy 2026 – PHP 8.5 w Magento, PHP 9.0 sygnały, FrankenPHP, AI tooling Q1
  • 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}