Alfa testovanie PHP 8.2 sa začalo

Bolo predstavené prvé alfa vydanie novej vetvy programovacieho jazyka PHP 8.2. Vydanie je naplánované na 24. novembra. Hlavné inovácie už dostupné na testovanie alebo plánované na implementáciu v PHP 8.2:

  • Pridané samostatné typy „false“ a „null“, ktoré možno použiť napríklad pre funkciu, ktorá vráti príznak ukončenia chyby alebo prázdnu hodnotu. Predtým bolo možné použiť „false“ a „null“ iba v spojení s inými typmi (napríklad „string|false“), ale teraz ich možno použiť samostatne: function alwaysFalse(): false { return false; }
  • Pridaná možnosť označiť triedu ako iba na čítanie. Vlastnosti v takýchto triedach je možné nastaviť iba raz, potom ich nemožno meniť. Predtým mohli byť jednotlivé vlastnosti triedy označené len na čítanie, ale teraz môžete povoliť tento režim pre všetky vlastnosti triedy naraz. Zadanie príznaku „len na čítanie“ na úrovni triedy tiež blokuje dynamické pridávanie vlastností do triedy. trieda len na čítanie Príspevok { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'nesprávne'; // Chyba: Nedá sa vytvoriť dynamická vlastnosť Post::$unknown
  • Schopnosť dynamicky vytvárať vlastnosti v triede (ako "post->unknown" v príklade vyššie) bola zastaraná. V PHP 9.0 bude mať prístup k vlastnostiam, ktoré nie sú pôvodne definované v triede, k chybe (ErrorException). Triedy, ktoré poskytujú metódy __get a __set na vytváranie vlastností, alebo dynamické vlastnosti v stdClass, budú naďalej fungovať nezmenené, bude podporovaná iba implicitná práca s neexistujúcimi vlastnosťami, aby sa vývojár chránil pred skrytými chybami. Aby sa zachovala práca starého kódu, navrhuje sa atribút „#[AllowDynamicProperties]“, ktorý umožňuje použitie dynamických vlastností.
  • Poskytuje možnosť filtrovať citlivé parametre vo výstupe sledovania zásobníka počas chyby. Vystrihnutie určitých informácií môže byť potrebné, keď sa informácie o chybách, ktoré sa vyskytnú, automaticky odosielajú do služieb tretích strán, ktoré sledujú problémy a informujú o nich vývojárov. Zo sledovania môžete napríklad vylúčiť parametre, ktoré zahŕňajú používateľské mená, heslá a premenné prostredia. test funkcie( $foo, #[\SensitiveParameter] $heslo, $baz ) { throw new Exception('Error'); } test('foo', 'heslo', 'baz'); Závažná chyba: Nezachytená Výnimka: Chyba v teste.php:8 Sledovanie zásobníka: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} vyvolané v test.php na linke 8
  • Schopnosť nahradiť hodnoty premenných do reťazcov pomocou výrazov "${var}" a ${(var)} bola zastaraná. Podpora bežne používaných náhrad „{$var}“ a „$var“ zostala zachovaná. Napríklad: "Ahoj {$world}"; OK "Ahoj $svet"; OK "Ahoj ${world}"; Zastarané: Používanie ${} v reťazcoch je zastarané
  • Zastarané čiastočne podporované volateľné položky, ktoré možno volať cez "call_user_func($callable)", ale nepodporujú volanie vo forme "$callable()": "self::method" "parent::method" "static" ::method " ["ja", "metóda"] ["rodič", "metóda"] ["statický", "metóda"] ["Foo", "Bar::method"] [nové Foo, "Bar: :method" ]
  • Implementovaná konverzia prípadu nezávislá od miestneho nastavenia. Funkcie ako strtolower() a strtoupper() teraz vždy konvertujú veľké a malé písmená v znakoch v rozsahu ASCII, ako keby boli nastavené na miestne nastavenie "C".

Zdroj: opennet.ru

Pridať komentár