🐘 PHP & Symfony Digest

Denní přehled PHP, Symfony a ekosystému · čtvrtek 9. července 2026
Mám dostatek dat pro sestavení digestu. Generuji výstup.

TL;DR

PHP 8.5.8 / 8.4.23 / 8.3.32 / 8.2.32 — synchronní bezpečnostní vydání php release

Dne 2. července 2026 PHP tým vydal bezpečnostní záplaty pro všechny aktuálně podporované větve. Konkrétně to jsou PHP 8.5.8, 8.4.23, 8.3.32 a 8.2.32. Všechna vydání jsou čistě bezpečnostní povahy — neobsahují nové funkce ani rozšiřující opravy chyb. Uživatelé všech zmíněných větví jsou vyzváni k okamžité aktualizaci.

Podrobnosti o opravených zranitelnostech jsou dostupné v příslušných ChangeLog souborech na php.net. Vydání pro větev 8.2 je pozoruhodné v tom, že 8.2 je nejstarší aktuálně udržovanou linií — podpora 8.1 již skončila. Větev 8.6 zatím v bezpečnostní sérii nefiguruje, neboť je stále v alpha fázi. Balíčky distribucí (Debian, Ubuntu, Alpine) obvykle zrcadlí záplaty do 24–48 hodin po upstream vydání.

PHP 8.6.0 Alpha 1 — první testovací build nové generace php

Také 2. července 2026 PHP tým zveřejnil PHP 8.6.0 Alpha 1, první testovací build příští hlavní verze. Jde o pre-produkční vydání určené výhradně pro testování; Alpha 2 je naplánována na 16. července, feature freeze a Beta 1 na 13. srpna a GA release na 19. listopadu 2026. Do Alpha 1 bylo začleněno několik schválených RFC.

Z přijatých RFCs stojí za zmínku: Partial Function Application v2 — namísto drobných anonymních funkcí lze zapsat volání s placeholdery pro chybějící argumenty; Closure Optimizations (přijato 13. března 2026) — PHP automaticky inferuje static pro uzávěry nepoužívající $this a cachuje plně bezstavové uzávěry, čímž snižuje overhead v closure-heavy kódu; Floating-Point Endianness Modifiers (14. března 2026) — rozšíření modifikátorů < a > na formátovací kódy pro float, sjednocení s chováním integer kódů.

Dále bylo přijato RFC přidávající metody ReflectionProperty::isReadable() a ReflectionProperty::isWritable() s volitelným parametrem $scope a $object pro kontextové ověření přístupu. Funkce json_decode() a json_last_error_msg() nově vrátí číslo řádku a sloupce, kde parsování selhalo — konec záhadných „Syntax error" bez kontextu.

Twig 3.28.0 — sloupce v chybách, dynamická makra, rychlejší sandbox symfony release

Twig 3.28.0 přináší hned několik výrazných vylepšení. Nejpatrnější pro vývojáře bude přesné hlášení pozice chyb: chybové hlášky nově obsahují číslo sloupce, přičemž API bylo rozšířeno o metody Error::getTemplateColumn() a Token::getOffset(). Ladění hustých šablonových výrazů bude výrazně snazší. Přidána byla také podpora dynamického volání maker přes tečkový operátor — {{ forms.(field)(name, value) }} — která nahrazuje dříve používanou (a nyní zastaralou) funkci attribute().

Sandbox prošel výkonostní optimalizací: filtry, funkce, testy a tagy mohou být nově označeny jako always_allowed_in_sandbox, čímž se eliminují runtime bezpečnostní kontroly pro tyto prvky. Kontrola __toString se nově přeskakuje pro parametry, které nemohou být přetypovány na řetězec (celočíselné typy, typované parametry), což snižuje overhead sandboxovaného renderování. Přidán byl také dedikovaný allow-list pro Twig testy v rámci SecurityPolicy.

Z oprav chyb: include() nyní vrací objekty Markup (zabraňuje dvojitému escapování), vnořená volání block() se správně resolvují vůči přepisujícím šablonám a prázdné hodnoty Markup již nejsou vyhodnocovány jako truthy. Třída Twig\Markup je označena jako @final a v Twig 4.0 se stane skutečně finální. Verze neobsahuje žádné breaking changes, jen deprecations připravující terén pro Twig 4.0.

A Week of Symfony #1018 — nový RemoteTemplateEmail, redesign výjimek a messenger:show symfony

Týdenní přehled č. 1018 (29. června – 5. července 2026) zaznamenal 33 sloučených pull requestů (21 kód, 12 dokumentace) a 25 uzavřených issues od 18 přispěvatelů s 5 518 přidanými a 4 348 odstraněnými řádky. Ve větvi 6.4 byly opraveny drobné ale relevantní regrese: správné parsování celých čísel s úvodním + v YAML komponentě, oprava typů klíčů v PhpDocTypeHelper v PropertyInfo a doplnění rozsahů RFC5737, RFC3849, RFC2544 a RFC5180 do IpUtils::PRIVATE_SUBNETS v HttpFoundation.

V rámci vývoje Symfony 8.2 přibyly zajímavé nové funkce: třída RemoteTemplateEmail v komponentě Mailer umožní odesílání e-mailů renderovaných přímo na straně poskytovatele (Mailchimp, Sendgrid apod.) bez nutnosti lokální šablony; nový #[AutoconfigureTag] v DependencyInjection lze nyní počítat per-tagged-service; ObjectMapper zvládá konverzi backed enumů na skalární hodnoty. UriSigner prošel přepracováním, kdy je číslo verze nyní „folded" přímo do signatury bez rezervovaného parametru.

Z oblasti návrhů a open issues: komunita debatuje o redesignu stránky pro zobrazení výjimek v ErrorHandler komponentě, Validator dostane nový constraint pro inline closure validaci a Messenger plánuje příkaz messenger:show pro zobrazení čekajících zpráv ve frontách. Web Summer Camp 2026 se konal 2.–4. července v Opatiji (Chorvatsko), kde Symfony community slavila přes výsledky #SFLive série.

Symfony 8.0 dosahuje EOL — přechod na 8.1+ nezbytný symfony

Symfony 8.0 bylo vydáno v listopadu 2025 jako „regular" (nikoli LTS) verze s plánovanou podporou na 8 měsíců, tj. do července 2026. Tato lhůta právě uplynula — větev 8.0 již nebude dostávat bezpečnostní ani bug-fix záplaty. Projekty stále běžící na 8.0 by měly co nejdříve migrovat na Symfony 8.1 (vydáno v květnu 2026), ideálně s výhledem na 8.2 (plánováno na listopad 2026).

Pro srovnání: Symfony 7.4 je LTS verze vydaná rovněž v listopadu 2025, která bude dostávat bug-fixy do listopadu 2028 a bezpečnostní záplaty do listopadu 2029 — celkem 4 roky podpory. Projekty, které nemohou rychle upgradovat minor verze, by měly zůstat na 7.4 a přejít přímo na 8.4 (příští LTS, plánovaná na listopad 2027).

Doporučený upgrade path přes symfony.com: nejprve aktualizovat na 7.4, spustit php bin/phpunit --display-deprecations pro odhalení přímých i nepřímých deprecací (z third-party bundlů), opravit je a teprve poté přejít na 8.0 a vzápětí na 8.1. Skočit přímo z 8.0 na 8.1 je triviální, neboť 8.x minor verze neobsahují breaking changes — pouze přidávají nové deprecace připravující půdu pro 9.0.

Doctrine ORM 2 EOL odložen + novinky z PHP toolingu doctrine tooling

Doctrine projekt původně plánoval EOL pro ORM 2 na únor 2026 (přibližně 2 roky po vydání ORM 3.0 v únoru 2024). Adopce ORM 3 však stagnuje na pouhých ~25–30 % instalací v porovnání s ORM 2 na Packagist. Z tohoto důvodu Doctrine tým rozhodl prodloužit údržbu ORM 2 o minimálně 2 další roky — větev 2.x tedy bude dostávat bug-fixy a bezpečnostní záplaty i nadále. Paralelně zůstává v aktivní podpoře DBAL 4 (vydáno společně s ORM 3), zatímco DBAL 3 je ve fázi security-only. Projekty stále na ORM 2 mají tedy více času, ale migrace na ORM 3 je i přesto doporučena, zejména kvůli výkonnostním zlepšením a podpoře PHP 8.x features.

V oblasti toolingu: PHPStan-PHPUnit 2.0.18 bylo vydáno 4. července 2026 s opravami pro zpracování mock intersection typů a lepší podporou PHPUnit 11+. Balíček byl vzápětí nasazen jako závislost v php.net webovém projektu samotném. API Platform vydalo verzi 4.3.16 jako poslední stabilní build větve 4.3 — projekt v červenci 2026 aktivně udržuje dvě větve řady 4.x a chystá se na objektový mapper pro budoucí verzi 5.0, která plánuje výrazné zjednodušení generování OpenAPI schémat.