Esitleti PHP 8.2 programmeerimiskeele uue haru esimene alfa-vÀljaanne. VÀljaanne on planeeritud 24. novembriks. PHP 8.2 peamised uuendused, mis on juba testimiseks saadaval vÔi mille rakendamine on plaanitud:
- Lisatud eraldi tĂŒĂŒbid âfalseâ ja ânullâ, mida saab kasutada nĂ€iteks funktsiooni kaudu veateate vĂ”i tĂŒhja vÀÀrtuse tagastamiseks. Varem vĂ”isid âfalseâ ja ânullâ olla kasutuses ainult koos teiste tĂŒĂŒpidega (nt âstring|falseâ), nĂŒĂŒd saab neid kasutada eraldi: function alwaysFalse(): false { return false; }
- On lisatud vĂ”imalus mĂ€rkida klass ainult lugemiseks. Sellistes klassides saab omadusi mÀÀrata ainult ĂŒks kord, pĂ€rast mida ei ole neid vĂ”imalik muuta. Varem sai ainult eraldi omadusi klassist mĂ€rkida ainult lugemiseks, nĂŒĂŒd on see reĆŸiim vĂ”imalik rakendada kĂ”igile klassi omadustele korraga. Klassi tasemel 'readonly' lipu mÀÀramine blokeerib ka omaduste dĂŒnaamilise lisamise klassi. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* ⊠*/); $post->unknown = âwrongâ; // Viga: Ei saa luua dĂŒnaamilist omadust Post::$unknown
- DĂŒnaamilise omaduste loomise vĂ”imalus klassis on tunnistatud vananenuks (nt âpost->unknownâ ĂŒlaltoodud nĂ€ites). PHP 9.0-s pĂ”hjustab klassis algselt mÀÀratlemata omadustele juurdepÀÀs vea (ErrorException). Klassid, mis pakuvad meetodeid __get ja __set omaduste loomiseks, vĂ”i dĂŒnaamilised omadused stdClass-is jĂ€tkavad tööd muutumatult, kaotatakse tugi ainult varjatud omadustega töötamiseks, et kaitsta arendajat varjatud vigade eest. Vanade koodide töös hoidmiseks on ette nĂ€htud atribuut â#[AllowDynamicProperties]â, mis lubab dĂŒnaamiliste omaduste kasutamist.
- Antud on vÔimalus filtreerida konfidentsiaalset teavet virnastuse andmetes, mis vÀljastatakse vea korral. Teatud teabe vÀljalÔikamine vÔib olla vajalik, kui teave esinevate vigade kohta saadetakse automaatselt kolmandate osapoolte teenustele, mis jÀlgivad probleeme ja teavitavad sellest arendajaid. NÀiteks saab virnastusest vÀlja jÀtta parameetreid, 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
- MÀÀratud on aegunud variandi toimetamine, kus muutujaid on vÔimalik stringidesse sisestada vÀljendite abil '`${var}`' ja '${(var)}'. Tavaliste asenduste '${var}' ja '$var' tugi on sÀilinud. NÀiteks: 'Hello {$world}'; OK 'Hello $world'; OK 'Hello ${world}'; Aegunud: `${}` kasutamine stringides on aegunud
- Aegunud on osaliselt toetatud kutsutavad objektid (callable), mida on vĂ”imalik kutsuda lĂ€bi 'call_user_func($callable)', kuid mis ei toeta kutset vormis '$callable()': 'self::method' 'parent::method' 'static::method' [âselfâ, âmethodâ] [âparentâ, âmethodâ] [âstaticâ, âmethodâ] [âFooâ, âBar::methodâ] [new Foo, âBar::methodâ]
- On iseseisev tĂ€histust muudeti. Funktsioonid, nagu strtolower() ja strtoupper(), muudetakse nĂŒĂŒd alati tĂ€histuse vahemikus ASCII, kui mÀÀratakse tĂ€histuseks "C".
Allikas: opennet.ru
