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
