🐘 PHP & Symfony Digest

Denní přehled PHP, Symfony a ekosystému · úterý 14. července 2026

TL;DR

A Week of Symfony #1019 — Messenger, Validator a AssetMapper symfony

Týden 6.–12. července 2026 přinesl 48 sloučených pull requestů (31 v kódu, 17 v dokumentaci) a uzavření 25 issues. Celkem se zapojilo 22 autorů s 5 573 přidanými a 2 979 odstraněnými řádky. Nejzajímavější novinkou je návrh nového příkazu messenger:show, který by umožnil inspektovat čekající zprávy ve frontách přímo z konzole bez nutnosti sáhnout po externích nástrojích.

Validator komponenta dostala PR pro kompatibilitu s PHP pipe operátorem (|>) — constraint třídy nově implementují __invoke(), takže je lze skládat funkcionálním stylem. AssetMapper v debug režimu nyní ignoruje zkompilované assety, čímž se zrychluje opakované sestavení při vývoji. Security komponenta získala volbu pro zakázání přesměrování při odhlášení (disable_redirect_on_logout) a Serializer rozšířil podporu o asociativní CSV hlavičky pro mapování sloupců.

Přibyl také PR pro FrameworkBundle/Messenger s možností vypnout RejectRedeliveredMessageMiddleware a vylepšení Notifier bridge pro Prelude. Komponenta Tui nově překresluje obrazovku při změně velikosti terminálu.

Twig 3.28.0: dynamická makra, bezpečnější sandbox a přesné chybové pozice symfony release

Twig 3.28.0 vydaný 3. července 2026 přináší tři zásadní vylepšení. Dynamické volání maker přes tečkový operátor umožňuje zavolat makro, jehož název je znám teprve za běhu — bez nutnosti používat zastaralou funkci attribute(). Výraz v závorce se vyhodnotí a použije jako název makra, což otevírá cestu k čistšímu funkcionálnímu kódu.

Sandbox dostal výrazné zlepšení výkonu: nová volba always_allowed_in_sandbox pro filtry, funkce a testy zajistí, že engine vůbec nevolá bezpečnostní policy — jméno se ani nezaznamenává. Bezpečnostní policy navíc nově podporuje explicitní allow-list pro testy a bezpečné built-in testy jsou přednastaveny jako vždy povolené. Sandbox také přestal obalovat každý argument volatelných objektů kontrolou __toString — obalení se nyní provádí jen tam, kde PHP typ parametru může skutečně vést ke koerci na řetězec, čímž se snižuje množství generovaného kódu.

Nový CorrectnessNodeVisitor centralizuje sémantické kontroly a deprecuje konstrukce, které dosud fungovaly, ale nikdy nebyly zamýšleny — například použití block tagu uvnitř capture uzlu (set) nebo použití macro, extends či use mimo kořen šablony. Lexer nově sleduje zdrojový offset každého tokenu, takže chybové hlášky ukazují přesný sloupec.

PHP 8.5.8 patch a RFC grapheme_mask pro PHP 8.6 php release

PHP 8.5.8 bylo vydáno 2. července 2026 jako bezpečnostní a opravný release. Opravuje chybu GH-22280 (nesprávná chyba kompilace pro goto na návěští předcházející bloku try/finally) a řadu dalších chyb napříč rozšířeními Core, BCMath, Date, Exif, GD, Intl, Opcache, OpenSSL, Phar a SOAP. PHP 8.5 bude dostávat bezpečnostní opravy až do 31. prosince 2027. Předchozí release 8.5.7 vyšel 2. června.

Na frontě PHP 8.6 proběhlo v týdnu 3.–11. července hlasování o RFC grapheme_mask(). Funkce přidá do rozšíření intl nativní podporu maskování osobních dat (PII) s plným respektováním hranic grafémových clusterů — složené Unicode sekvence (emoji, vlajky, kombinované znaky) tak nikdy nebudou při maskování poškozeny. Návrh neobsahuje žádné BC breaky. Výsledek hlasování (uzavřeno 11. července) zatím není v průzkumu plně potvrzen, avšak diskuse probíhala bez zásadní opozice.

Paralelně pokračuje diskuse o RFC pro aktualizaci licence PHP, která by přešla na novější verzi kompatibilní s GPL. PHP 8.5 mezitím zaznamenalo rapidní adopci díky klíčovým novinkám jako pipe operátor (|>), clone with a atribut #[\NoDiscard].

Doctrine ORM 2 EOL odložen na únor 2027 — adopce trojky stagnuje doctrine

V říjnu 2025 Doctrine tým oznámil revizi původního plánu: konec životnosti ORM 2 byl posunut z února 2026 minimálně na únor 2027. Důvodem je nízká adopce ORM 3 — podle dat z Packagist dosahuje instalační základna ORM 3 pouze 25–30 % instalací ORM 2, zatímco DBAL 4 se drží na cca 60 % oproti DBAL 3. Tým se snaží pochopit bariéry migrace a pro usnadnění přechodu vzal zpět část deprecací z původního ORM 3.0 (zejména partial objects) a vylepšil upgrade path pro ostatní.

Od března 2026 jsou do větve 2.x přijímány výhradně změny kompatibility s novými verzemi PHP (8.5, 8.6, případně 9.0) — žádné nové funkce ani opravy logiky. Nejnovější vydání ORM 3 je verze 3.6.7 z 25. května 2026. Pro projekty stále na ORM 2 je tedy okno pro migraci otevřené, ale tým dává jasně najevo, že prodloužení je mimořádné a závěrečné.

DBAL 4.0, vydaný zároveň s ORM 3.0 v únoru 2024, dosáhl pokrytí testy na úrovni 94 % a jeho adopce je výrazně lepší. Projekty, které stále používají DBAL 3, by měly zvážit migraci v dohledné době, protože DBAL 3 se blíží svému konci podpory souběžně s ORM 2.

PHPStan 2.2.5 a phpstan-phpunit 2.0.18 tooling release

PHPStan 2.2.5 bylo vydáno 5. července 2026 jako patch release řady 2.2. Verze 2.2 přinesla řadu vylepšení v oblasti analýzy generik a inference typů; patch 2.2.5 opravuje regrese zjištěné po vydání 2.2.2. Závislost PHPStan je automaticky aktualizována i na webu php.net, kde přechod z 2.2.2 na 2.2.5 proběhl přes Dependabot. PHPStan 2.x vyžaduje PHP 7.4+ a je plně kompatibilní s PHP 8.5.

Den předtím, 4. července, vyšlo phpstan-phpunit 2.0.18. Balíček rozšiřuje PHPStan o PHPUnit-specifické pravidlo — zužování typů pro mock objekty, kontrolu typů asercí a detekci metod ukončujících tok kontroly. Verze 2.0.18 vyžaduje phpstan/phpstan: ^2.2.3 a podporuje PHPUnit od verze 9.6. Konkrétní changelog pro 2.0.18 oproti 2.0.16 není veřejně zdokumentován mimo GitHub releases, upgrade je ale doporučen pro plnou kompatibilitu s aktuálním PHPStan jádrem.

Laravel 13: AI SDK, passkeys, JSON:API a blížící se API starter kity release

Laravel 13 byl vydán 17. března 2026 bez breaking changes oproti Laravel 12. Největší novinkou je první-stranní Laravel AI SDK — provider-agnostické rozhraní pro text, agenty, obrázky, audio a embeddingy s podporou OpenAI, Anthropic a Gemini přes pouhou změnu konfigurace. Nově přibyla metoda anyOf v Illuminate\JsonSchema pro expresivnější strukturovaný výstup kompatibilní s OpenAI a Gemini API. Framework dále nativně podporuje PostgreSQL transaction poolery jako PgBouncer — stačí nastavit 'pooled' => true v konfiguraci databázového připojení.

Passkeys (WebAuthn) jsou nyní integrovány do starter kitů a Fortify — nové starter kity dodávají přihlašovací UI pro passkeys rovnou ve výchozím stavu. JSON:API specifikace je podporována první-stranně přes resource třídy, které obstarávají serializaci response objektů, vkládání vztahů (relationship inclusion), sparse fieldsets a správné response hlavičky. Reverb dostal databázový driver pro horizontální škálování přes MySQL nebo PostgreSQL bez nutnosti Redis.

API starter kity jsou aktivně vyvíjeny (dva PR in-flight): základní API starter kit s autentizací a pravděpodobná podpora Teams. Datum vydání zatím není oznámeno. Laravel News informuje, že zájem komunity byl opakovaný a tým Wendella na funkci aktuálně pracuje.