Esitleti esimene alfa vÀljalase uuele PHP 8.2 programmeerimiskeele harule. VÀljalase on kavandatud 24. novembriks. Peamised uuendused, mis on juba testimiseks saadaval vÔi kavas rakendada PHP 8.2-s:
- Lisatud eraldi tĂŒĂŒbid «false» ja «null», mida saab kasutada nĂ€iteks funktsiooni tagastusvÀÀrtuse nĂ€itamiseks, kui see saavutab vea vĂ”i tĂŒhja vÀÀrtuse. Varasemalt vĂ”isid «false» ja «null» olla kasutusel ainult koos teiste tĂŒĂŒpidega (nĂ€iteks «string|false»), kuid nĂŒĂŒd saab neid kasutada eraldi: function alwaysFalse(): false { return false; }
- Lisatud vĂ”imalus tĂ€histada klass ainult lugemisena. Sarnastes klassides saab omadusi mÀÀrata ainult ĂŒks kord, pĂ€rast mida need ei ole enam muudetavad. Varasemalt vĂ”isid ainult eraldi omadused olla tĂ€histatud lugemisena, kuid nĂŒĂŒd saab seda reĆŸiimi korraga rakendada kĂ”ikidele klassi omadustele. âreadonlyâ lipu mÀÀramine klassi tasemel blokeerib ka dĂŒnaamilise omaduste lisamise klassile. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* ⊠*/); $post->unknown = âwrongâ; // Viga: DĂŒnaamilise omaduse loomine ebaĂ”nnestus Post::$unknown
- DĂŒnaamiliste omaduste loomise vĂ”imalus klassis (nagu «post->unknown» ĂŒlaltoodud nĂ€ites) kuulutati vananenuks. PHP 9.0-s toob algselt klassis mÀÀramata omaduste juurde pÀÀsemine kaasa vea (ErrorException). Klassid, mis pakuvad meetodeid __get ja __set omaduste loomiseks vĂ”i dĂŒnaamilised omadused stdClass-is, jĂ€tkavad töökindlat toimimist ilma muudatusteta, lĂ”petatakse ainult varjatud omadustega tegelemise tugi, et kaitsta arendajat peidetud vigade eest. Olemasoleva koodi töötamise sĂ€ilitamiseks on ette nĂ€htud atribuut â#[AllowDynamicProperties]â, mis lubab kasutada dĂŒnaamilisi omadusi.
- KĂ€ideldud on vĂ”imalus filtreerida konfidentsiaalsed parameetrid virnastuste jĂ€lgimisdatasetis, mis vĂ€ljastatakse vea korral. Teatud teabe eemaldamine vĂ”ib olla vajalik, kui veateateid saadetakse automaatselt kolmandatele osapooltele, kes jĂ€lgivad probleeme ja teavitavad neist arendajaid. NĂ€iteks vĂ”ib jĂ€lgimisest vĂ€listada parameetrid, mis sisaldavad kasutajanimesid, paroole ja keskkonnamuutujaid. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception(âErrorâ); } test(âfooâ, âpasswordâ, âbazâ); Fatal error: Uncaught Exception: Error in test.php:8 Stack trace: #0 test.php(11): test(âfooâ, Object(SensitiveParameterValue), âbazâ) #1 {main} thrown in test.php on line 8
- Hoole alla on vÔetud vananenud vÔimalus, kus muutujaid saab stringides asendada vÀljendite kaudu «${var}» ja ${(var)}». Tavalised asendused «{$var}» ja «$var» on endiselt toetatud. NÀiteks: «Hello {$world}»; OK «Hello $world»; OK «Hello ${world}»; Deprecated: Using ${} in strings is deprecated
- Vananenud on osaliselt toetatud kutsutavad objektid (callable), mis saab kutsuda lÀbi «call_user_func($callable)», kuid ei toeta kutsumist kujul «$callable()»: «self::method» «parent::method» «static::method» [«self», «method»] [«parent», «method»] [«static», «method»] [«Foo», «Bar::method»] [new Foo, «Bar::method»]
- Rakendatud on locale-st sĂ”ltumatu tĂ€hemĂ€rkide suuruste muutmine. Funktsioonid, nagu strtolower() ja strtoupper(), muudavad nĂŒĂŒd tĂ€hemĂ€rkide suuruse ASCII vahemikus alati, sĂ”ltumata seadistatud locale'ist «C».
Allikas: opennet.ru
