Në 24 nëntor do të publikohet versioni i parë alfa i degës së re të gjuhës së programimit PHP 8.2. Disa nga ndryshimet kryesore, të cilat janë tashmë të disponueshme për testim ose planifikohen për t'u realizuar në PHP 8.2:
- Janë shtuar tipet e ndara "false" dhe "null", të cilat mund të përdoren, për shembull, për të kthyer një funksion me një tregues përfundimi me gabim ose një vlerë të zbrazët. Më parë "false" dhe "null" mund të përdoren vetëm në lidhje me lloje të tjera (për shembull, "string|false"), por tani mund të aplikohen veçmas: function alwaysFalse(): false { return false; }
- Shtuar mundĂ«sinĂ« e shĂ«njimit tĂ« klasĂ«s si tĂ« lexueshme vetĂ«m. PasuritĂ« nĂ« kĂ«to klasa mund tĂ« caktohen vetĂ«m njĂ« herĂ«, pas sĂ« cilĂ«s nuk do tĂ« jenĂ« mĂ« tĂ« disponueshme pĂ«r modifikim. MĂ« parĂ«, vetĂ«m pasuritĂ« e veçanta tĂ« klasĂ«s mund tĂ« shĂ«noheshin si tĂ« lexueshme, ndĂ«rsa tani mund tĂ« aktivizohet ky mod pĂ«r tĂ« gjitha pasuritĂ« e klasĂ«s. Caktimi i flamurit 'readonly' nĂ« nivelin e klasĂ«s gjithashtu bllokon shtimin dinamik tĂ« pasurive nĂ« klasĂ«. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* ⊠*/); $post->unknown = âwrongâ; // Gabim: Nuk mund tĂ« krijohet pasuri dinamike Post::$unknown
- ĂshtĂ« shpallur si e papĂ«rshtatshme mundĂ«sia pĂ«r tĂ« krijuar dinamikisht pronĂ«si nĂ« klasĂ« (si "post->unknown" nĂ« shembullin mĂ« sipĂ«r). NĂ« PHP 9.0, aksesimi i pronave qĂ« nuk janĂ« pĂ«rcaktuar fillimisht nĂ« klasĂ« do tĂ« çojĂ« nĂ« njĂ« gabim (ErrorException). Klasa qĂ« ofrojnĂ« metodat __get dhe __set pĂ«r tĂ« krijuar pronĂ«si, ose pronĂ«sitĂ« dinamike nĂ« stdClass do tĂ« vazhdojnĂ« tĂ« funksionojnĂ« pa ndryshime; do tĂ« ndalet mbĂ«shtetje vetĂ«m pĂ«r punĂ«n e happenĂ« me pronĂ«si qĂ« nuk ekzistojnĂ« pĂ«r tĂ« mbrojtur programuesin nga gabimet e fshehura. PĂ«r tĂ« ruajtur punĂ«n e kodit tĂ« vjetĂ«r, Ă«shtĂ« propozuar atributi "#[AllowDynamicProperties]", qĂ« lejon pĂ«rdorimin e pronĂ«sive dinamike.
- E mundĂ«suar filtrimi i parametrave tĂ« ndjeshme nĂ« tĂ« dhĂ«nat e gjurmimeve tĂ« stack-ut, qĂ« jepen gjatĂ« njĂ« gabimi. Heqja e informacionit tĂ« caktuar mund tĂ« jetĂ« e nevojshme kur detajet mbi gabimet qĂ« ndodhin dĂ«rgohen automatikisht nĂ« shĂ«rbime tĂ« jashtme qĂ« ndjekin probleme dhe informojnĂ« zhvilluesit. PĂ«r shembull, mund tĂ« pĂ«rjashtohen nga gjurmimi parametrat qĂ« pĂ«rmbajnĂ« emrat e pĂ«rdoruesve, fjalĂ«kalimet dhe variablat e ambientit. 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
- ĂshtĂ« shpallur e vjetruar mundĂ«sia pĂ«r vendosjen e vlerave tĂ« variablave nĂ« vargje pĂ«rmes shprehjeve «${var}» dhe ${(var)}». MbĂ«shtetje pĂ«r vendosjet e zakonshme «{$var}» dhe «$var» Ă«shtĂ« ruajtur. PĂ«r shembull: «Hello {$world}»; OK «Hello $world»; OK «Hello ${world}»; E vjetruar: PĂ«rdorimi i ${} nĂ« vargje Ă«shtĂ« i vjetruar
- ĂshtĂ« shpallur e vjetruar pjesĂ«risht mbĂ«shtetja pĂ«r objektet e thirrjes (callable), tĂ« cilat mund tĂ« thirren pĂ«rmes «call_user_func($callable)», por nuk mbĂ«shtesin thirrjen nĂ« formĂ«n «$callable()»: «self::method» «parent::method» «static::method» [«self», «method»] [«parent», «method»] [«static», «method»] [«Foo», «Bar::method»] [new Foo, «Bar::method»]
- ĂshtĂ« realizuar njĂ« transformim tĂ« regjistrit tĂ« simboleve tĂ« pavaruara nga lokaliteti. Funksionet si strtolower() dhe strtoupper() tani gjithmonĂ« transformojnĂ« regjistrin e simboleve nĂ« intervalin ASCII, siç Ă«shtĂ« vendosur nĂ« lokalitetin "C".
Burimi: opennet.ru
