Esitleti PHP 8.2 programmeerimiskeele uue haru esimest alfavÀljalaset. VÀljalaskmine on kavandatud 24. novembrile. Peamised uuendused, mis on PHP 8.2-s juba testimiseks saadaval vÔi kavandatud juurutamiseks:
- Lisatud on eraldi tĂŒĂŒbid âfalseâ ja ânullâ, mida saab kasutada nĂ€iteks vea lĂ”petamise lipu vĂ”i tĂŒhja vÀÀrtuse tagastamiseks. Varem sai "false" ja "null" kasutada ainult koos teiste tĂŒĂŒpidega (nĂ€iteks "string|false"), kuid nĂŒĂŒd saab neid kasutada eraldi: function alwaysFalse(): false { return false; }
- Lisati vĂ”imalus mĂ€rkida klass kirjutuskaitstuks. Selliste klasside omadusi saab mÀÀrata ainult ĂŒks kord, pĂ€rast seda ei saa neid muuta. Varem sai ĂŒksikuid klassi atribuute mĂ€rkida kirjutuskaitstuks, kuid nĂŒĂŒd saate selle reĆŸiimi lubada kĂ”igi klasside atribuutide jaoks korraga. Lipu "kirjutuskaitstud" mÀÀramine klassi tasemel blokeerib ka atribuutide dĂŒnaamilise lisamise klassi. readonly class Postitus { public function __construct( public string $pealkiri, public Autor $autor, ) {} } $post = new Postitus(/* ⊠*/); $post->unknown = 'vale'; // Viga: dĂŒnaamilist atribuuti ei saa luua Post::$unknown
- VĂ”imalus klassis dĂŒnaamiliselt luua atribuute (nagu ĂŒlaltoodud nĂ€ites "post->unknown") on aegunud. PHP 9.0 puhul pĂ”hjustab klassis algselt mÀÀratlemata omadustele juurdepÀÀs tĂ”rketeate (ErrorException). Klassid, mis pakuvad atribuutide loomiseks __get ja __set meetodeid vĂ”i stdClassi dĂŒnaamilisi atribuute, jĂ€tkavad tööd muudatusteta, arendaja kaitsmiseks peidetud vigade eest toetatakse ainult kaudset tööd olematute atribuutidega. Vana koodi töö sĂ€ilitamiseks pakutakse vĂ€lja atribuut â#[AllowDynamicProperties]â, mis vĂ”imaldab kasutada dĂŒnaamilisi omadusi.
- Annab vÔimaluse filtreerida tundlikke parameetreid virnajÀlje vÀljundis vea ajal. Teatud teabe vÀljalÔikamine vÔib osutuda vajalikuks, kui teave ilmnevate vigade kohta saadetakse automaatselt kolmandate osapoolte teenustele, mis jÀlgivad probleeme ja teavitavad neist arendajaid. NÀiteks saate jÀtta jÀlgimisest vÀlja parameetrid, mis sisaldavad kasutajanimesid, paroole ja keskkonnamuutujaid. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'parool', 'baz'); Saatuslik viga: tabamata Erand: viga failis test.php: 8 Pinu jÀlg: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} visatud faili test.php real 8
- VÔimalus asendada muutujate vÀÀrtusi stringideks, kasutades avaldisi "${var}" ja ${(var)}, on aegunud. Tavaliselt kasutatavate asenduste "{$var}" ja "$var" tugi on sÀilinud. NÀiteks: "Tere, {$maailm}"; OK "Tere $maailm"; OK "Tere ${world}"; Aegunud: ${} kasutamine stringides on aegunud
- Aegunud osaliselt toetatud helistatavad failid, mida saab kutsuda "call_user_func($callable)" kaudu, kuid mis ei toeta helistamist kujul "$callable()": "self::method" "parent::method" "static" ::method " ["ise", "meetod"] ["vanem", "meetod"] ["staatiline", "meetod"] ["Foo", "Bar::method"] [uus Foo, "Bar: :method" ]
- Rakendatud lokaadist sĂ”ltumatu juhtumite teisendamine. Funktsioonid nagu strtolower() ja strtoupper() teisendavad nĂŒĂŒd alati ASCII-vahemikus olevate mĂ€rkide suur- ja vĂ€iketĂ€hti, nagu oleksid need seatud lokaadile "C".
Allikas: opennet.ru
