Alfa testování PHP 8.2 začalo

Byla představena první alfa verze nové větve programovacího jazyka PHP 8.2. Vydání je naplánováno na 24. listopadu. Hlavní inovace, které jsou již k dispozici k testování nebo plánované k implementaci v PHP 8.2:

  • Přibyly samostatné typy „false“ a „null“, které lze využít například pro vrácení znaménka dokončení s chybou nebo prázdnou hodnotu funkcí. Dříve mohly být "false" a "null" použity pouze ve spojení s jinými typy (například "string|false"), ale nyní je lze použít samostatně: function alwaysFalse(): false { return false; }
  • Přidána možnost označit třídu jako pouze pro čtení. Vlastnosti v takových třídách lze nastavit pouze jednou, poté již nebudou dostupné pro změnu. Dříve mohly být jednotlivé vlastnosti třídy označeny pouze pro čtení, ale nyní můžete tento režim zapnout pro všechny vlastnosti třídy najednou. Zadání příznaku „pouze pro čtení“ na úrovni třídy také blokuje dynamické přidávání vlastností do třídy. třída pouze pro čtení Příspěvek { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'špatně'; // Chyba: Nelze vytvořit dynamickou vlastnost Post::$unknown
  • Schopnost dynamicky vytvářet vlastnosti ve třídě byla zastaralá (jako "post->unknown" ve výše uvedeném příkladu). V PHP 9.0 bude mít přístup k vlastnostem, které nebyly původně definovány ve třídě, k chybě (ErrorException). Třídy, které poskytují metody __get a __set pro vytváření vlastností, nebo dynamické vlastnosti v stdClass budou nadále fungovat beze změny, pouze bude zastavena implicitní práce s neexistujícími vlastnostmi, aby byl vývojář chráněn před skrytými chybami. Aby starý kód fungoval, je navržen atribut „#[AllowDynamicProperties]“, který umožňuje použití dynamických vlastností.
  • Poskytuje možnost filtrovat citlivá nastavení ve výstupu trasování zásobníku v době chyby. Vyjmutí určitých informací může být vyžadováno, když jsou informace o chybách, které se vyskytnou, automaticky odesílány do služeb třetích stran, které sledují problémy a informují o nich vývojáře. Z trasování můžete například vyloučit parametry, které zahrnují uživatelská jména, hesla a proměnné prostředí. function test( $foo, #[\SensitiveParameter] $heslo, $baz ) { throw new Exception('Error'); } test('foo', 'heslo', 'baz'); Závažná chyba: Nezachyceno Výjimka: Chyba v test.php:8 Trasování zásobníku: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} vyvoláno v test.php online 8
  • Schopnost nahrazovat hodnoty proměnných do řetězců pomocí výrazů "${var}" a ${(var)}" byla zastaralá. Podpora běžně používaných substitucí "{$var}" a "$var" byla zachována. Například: "Ahoj {$world}"; OK "Ahoj $světe"; OK "Ahoj ${world}"; Zastaralé: Použití ${} v řetězcích je zastaralé
  • Částečně podporované callables, které lze volat přes "call_user_func($callable)" byly zastaralé, ale nepodporují volání ve tvaru "$callable()": "self::method" "parent::method" "static :: metoda" ["vlastní", "metoda"] ["rodič", "metoda"] ["statická", "metoda"] ["Foo", "Bar::method"] [nové Foo, "Bar: :metoda" "]
  • Implementována konverze případu nezávislá na národním prostředí. Funkce jako strtolower() a strtoupper() nyní vždy převádějí velká a malá písmena znaků v rozsahu ASCII, jako při nastavení národního prostředí na "C".

Zdroj: opennet.ru

Přidat komentář