Vydanie programovacieho jazyka PHP 8.2

Po roku vývoja bolo predstavené vydanie programovacieho jazyka PHP 8.2. Nová pobočka obsahuje sériu nových funkcií, ako aj niekoľko zmien, ktoré narúšajú kompatibilitu.

Kľúčové vylepšenia v PHP 8.2:

  • 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
  • Pridané samostatné typy „true“, „false“ a „null“, ktoré môžu mať iba jednu platnú hodnotu a používajú sa napríklad na vrátenie funkcie s príznakom ukončenia chyby alebo prázdnou hodnotou. Predtým bolo možné použiť „true“, „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 ; }
  • 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
  • Povolené definovať konštanty v vlastnostiach (vlastnosť, mechanizmus opätovného použitia kódu). Ku konštantám definovaným vo vlastnosti je možné pristupovať prostredníctvom triedy, ktorá používa danú vlastnosť (nie však prostredníctvom názvu vlastnosti). vlastnosť Foo { public const KONŠTANTA = 1; public function bar(): int { return self::CONSTANT; // Závažná chyba } } class Bar { use Foo; } var_dump(Bar::CONSTANT); // 1
  • Pridaná možnosť špecifikovať typy v disjunktívnej normálnej forme (DNF, Disjunktívna normálna forma), ktorá vám umožňuje kombinovať spojenie typov (kolekcie dvoch alebo viacerých typov) a priesečník typov (typy, ktorých hodnoty spadajú pod niekoľko typy súčasne). class Foo { public function bar((A&B)|null $entita) { if ($entita === null) { return null; } return $entita; } }
  • Bolo navrhnuté nové rozšírenie „Random“ s funkciami a triedami na generovanie pseudonáhodných čísel a sekvencií. Modul poskytuje objektovo orientované rozhranie, umožňuje vybrať rôzne motory na generovanie pseudonáhodných čísel, vrátane tých, ktoré sú vhodné na použitie v kryptografii, a poskytuje pomocné funkcie, napríklad na náhodné miešanie polí a reťazcov, výber náhodných kľúčov polí, súčasné použitie viacerých generátorov s vlastným nezávislým stavom. $rng = $is_production ? new Random\Engine\Secure() : new Random\Engine\Mt19937(1234); $randomizer = new Random\Randomizer($rng); $randomizer->shuffleString('foobar');
  • 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".
  • Pridané nové funkcie: mysqli_execute_query, curl_upkeep, memory_reset_peak_usage, ini_parse_quantity, libxml_get_external_entity_loader, sodium_crypto_stream_xchacha20_xor_ic, openssl_cipher_key_length.
  • Pridané nové metódy: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Schopnosť dynamicky vytvárať vlastnosti v triede 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ť bez zmien, 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í.
  • 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" ]
  • Do nastavení bola pridaná direktíva error_log_mode, ktorá vám umožňuje určiť režim prístupu k protokolu chýb.

Zdroj: opennet.ru

Pridať komentár