Jaké problémy může přinést přechod na PHP 8.4?

Jaké problémy může přinést přechod na PHP 8.4?

PHP 8.4, které bylo plánováno na listopad 2024, přináší nejen nové funkce, ale i deprekované prvky, které mohou způsobit problémy při migraci. Pokud plánujete přechod na tuto novou verzi PHP, měli byste být připraveni na několik změn, které mohou ovlivnit stávající kód.

Deprecation: Implicitně označené parametry jako nullable

Jednou z nejvýraznějších změn, které přináší PHP 8.4, je deprekování implicitního označení parametrů jako nullable. V předchozích verzích PHP bylo běžné označit parametr jako nullable jednoduše tím, že mu přiřadíte hodnotu null v deklaraci funkce, například:

function test(string $test = null) {}

Tato syntaxe byla povolena až do verze PHP 8.3, ale od verze 8.4 se stává deprekovanou. Pokud tedy budete i nadále používat tuto syntaxi, PHP na to upozorní při spuštění kódu.

Příklad:

function test(string $test = null) {}

test('PHP'); // Povoleno
test(null); // Povoleno

Tento způsob deklarace parametrů však bude v PHP 8.4 již považován za zastaralý. Pro opravu je nutné použít explicitní nullable typ, který byl zaveden ve verzi PHP 7.1. Opravená syntaxe by měla vypadat takto:

function test(?string $test = null) {}

Tento nový zápis jasně specifikuje, že parametr $test může být buď typu string, nebo null.

Jak zjistit deprekované funkce?

Detekce této deprekované funkce je snadná, pokud používáte nástroje, jako je PHP’s vestavěný linter. Stačí mít nainstalovanou verzi PHP 8.4 a spustit linter na vašem kódu. Linter vám pomůže odhalit všechny části kódu, které používají zastaralou syntaxi, a doporučí opravu. To vám umožní připravit váš kód na přechod na PHP 8.4 bez větších problémů.

Doporučení pro přechod na PHP 8.4

Pokud chcete zajistit, aby přechod na PHP 8.4 probíhal hladce, doporučujeme následující kroky:

  1. Aktualizujte svůj kód: Ujistěte se, že všechny funkce, které používají implicitně nullable parametry, byly upraveny na explicitní nullable typy.
  2. Testování: Proveďte důkladné testování, abyste zajistili, že všechny změny byly správně implementovány a že váš kód stále funguje tak, jak má.
  3. Využijte linter: Použijte PHP linter pro detekci dalších deprekovaných funkcí, které mohou být v kódu přítomny.
  4. Připravte se na další změny: Sledujte novinky o PHP 8.4, abyste byli připraveni na případné změny nebo nové funkce, které mohou ovlivnit váš kód.

Přechod na PHP 8.4 může být pro některé vývojáře náročný, ale pokud se na něj připravíte a provedete potřebné změny včas, migrace proběhne bez větších problémů.

Posunutí verze PHP na 8.4 v Docker kontejneru pro Virtuální azyl

Posunutí verze PHP na 8.4 v Docker kontejneru pro Virtuální azyl

V rámci neustálého vylepšování platformy virtualniazyl.cz jsem se rozhodl posunout verzi PHP na 8.4 v našem Docker kontejneru. Tento krok přináší několik vylepšení, která zjednodušují vývoj i optimalizaci aplikace. PHP 8.4 přináší nové možnosti, včetně vylepšení výkonu a nových jazykových funkcí, které jsou pro moderní aplikace klíčové.

Jedním z největších benefitů pro vývojáře je zrychlení aplikací díky vylepšením v runtime, ale také přidání nových nástrojů pro optimalizaci kódu. Osobně se těším i na nadcházející verzi PHP 8.5, která slibuje další inovace, jako například podporu nových syntaxí a nových možností pro efektivní práci s objekty a třídami.

Pokud se podíváme na širší kontext, tak se v rámci tohoto posunu zaměřujeme také na optimalizace, které využívají vlastnosti frameworku Nette. V nedávno vydaném článku na blogu Nette se popisuje, jak jedna řádka v konfiguraci může výrazně zrychlit vaši Nette aplikaci. Tato změna souvisí s tím, jak Nette dokáže inteligentně optimalizovat způsob, jakým pracuje s požadavky a jakým způsobem jsou zpracovávány jednotlivé požadavky na server.

V článku se například uvádí, že díky nové vlastnosti frameworku, která zjednodušuje cachování a zrychluje práci s routováním, je možné ušetřit i několik milisekund na každém požadavku. Tato optimalizace se hodí zejména pro projekty, kde je důležité dosahovat vysokého výkonu a nízké latence.

Pro více informací o této optimalizaci si můžete přečíst celý článek na blogu Nette, kde se dozvíte, jak tuto novou vlastnost využít.

S těmito změnami, jak v PHP, tak v Nette, se těším na to, co přinese PHP 8.5 a jaké nové možnosti pro zrychlení a zjednodušení vývoje nám přinese.

Budu samozřejmě kontejner nějakou dobu testovat než ho nasadím na zatím běžící testovací verzi.