Ishte prezantuar alpha-lëshimi i parë i degës së re të gjuhës së programimit PHP 8.2. Lëshimi është parashikuar për më 24 nëntor. Novitetet kryesore, të cilat tashmë janë të disponueshme për testim ose janë planifikuar për t'u realizuar në PHP 8.2:
- Shtohen tipe të veçanta "false" dhe "null", të cilat mund të përdoren, për shembull, për të kthyer një funksion një tregues përfundimi me gabim ose një vlerë bosh. Më parë "false" dhe "null" mund të përdorej vetëm në lidhje me tipe të tjera (për shembull, "string|false"), ndërsa tani mund të aplikohen ndaras: function alwaysFalse(): false { return false; }
- Shtohet mundĂ«sia pĂ«r tĂ« ndalur klasĂ«n si tĂ« disponueshme vetĂ«m pĂ«r tĂ« lexuar. Pronat nĂ« kĂ«to klasa mund tĂ« pĂ«rcaktohen vetĂ«m njĂ« herĂ«, pas sĂ« cilĂ«s nuk do tĂ« jenĂ« nĂ« dispozicion pĂ«r ndryshim. MĂ« parĂ« vetĂ«m pronat e veçanta tĂ« klasĂ«s mund tĂ« shĂ«nohen si vetĂ«m pĂ«r tĂ« lexuar, ndĂ«rsa tani mund tĂ« aktivizohet ky mod pĂ«r tĂ« gjitha pronat e klasĂ«s njĂ«herĂ«sh. PĂ«rcaktimi i flamurit "readonly" nĂ« nivelin e klasĂ«s gjithashtu bllokon shtimin dinamik tĂ« pronave nĂ« klasĂ«. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* ⊠*/); $post->unknown = âwrongâ; // Gabim: Nuk mund tĂ« krijoni pronĂ« dinamike Post::$unknown
- Kjo është shpallur e vjetër mundësia e krijimit dinamik të pronave në klasë (si "post->unknown" në shembullin e mësipërm). Në PHP 9.0, qasja në pronat, fillimisht të papërcaktuar në klasë, do të çojë në një gabim (ErrorException). Klasa që ofrojnë metodat __get dhe __set për të krijuar prona, ose pronat dinamike në stdClass do të vazhdojnë të punojnë pa ndryshim, do të ndalet vetëm mbështetja për veprimin e heshtur me pronat e pakta për të mbrojtur zhvilluesin nga gabimet e fshehura. Për të ruajtur funksionimin e kodit të vjetër, është propozuar atributi "#[AllowDynamicProperties]", i cili lejon përdorimin e pronave dinamike.
- Kjo mundĂ«si ofron filtrimin e parametrave konfidencial nĂ« tĂ« dhĂ«nat e gjurmĂ«s sĂ« STACK, qĂ« dalin gjatĂ« njĂ« gabimi. Eliminimi i informacionit tĂ« caktuar mund tĂ« jetĂ« e nevojshme kur tĂ« dhĂ«nat mbi gabimet qĂ« ndodhin dĂ«rgohen automatikisht nĂ« shĂ«rbime tĂ« jashtme qĂ« ndjekin problemet dhe informojnĂ« zhvilluesit. PĂ«r shembull, mund tĂ« ekskluzoni nga gjurmimi parametrat qĂ« pĂ«rfshijnĂ« emrat e pĂ«rdoruesve, fjalĂ«kalimet dhe variablat e ambientit. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception(âGabimâ); } test(âfooâ, âpasswordâ, âbazâ); Gabim fatal: Exception e kapur: Gabim nĂ« test.php:8 Gjurmimi i stack: #0 test.php(11): test(âfooâ, Object(SensitiveParameterValue), âbazâ) #1 {main} hedhur nĂ« test.php nĂ« linjĂ«n 8
- Mundësia për të zëvendësuar vlerat e variablave në strings me ndihmën e shprehjeve «${var}» dhe ${(var)}» shpallet e vjetruar. Mbështetje për zëvendësime të zakonshme si «{$var}» dhe «$var» është ruajtur. Për shembull: «Hello {$world}»; OK «Hello $world»; OK «Hello ${world}»; E vjetruar: Përdorimi i ${} në strings është e vjetruar
- Objektet e thirrur të mbështetur pjesërisht që mund të thirren përmes «call_user_func($callable)», por nuk mbështesin thirrjen në formën «$callable()» shpallen të vjetruara: «self::method» «parent::method» «static::method» [«self», «method»] [«parent», «method»] [«static», «method»] [«Foo», «Bar::method»] [new Foo, «Bar::method»]
- Implementohet një transformim i shkronjave i pavarur nga lokaliteti. Funksionet si strtolower() dhe strtoupper() tani gjithmonë ndryshojnë rastin e shkronjave në hapësirën ASCII si për caktimin e lokalitetit «C».
Burimi: opennet.ru
