Ce este nou în PHP 8.3?
PHP evoluează: versiunea 8.3 aduce validare JSON eficientă, o gestionare mai coerentă a erorilor și acces dinamic la constantele de clasă. O privire de ansamblu asupra celor mai importante noutăți.
Validarea JSON regândită: json_validate
Lucrez cu PHP de foarte mult timp și am scris și rescris în el mii de linii de cod. Acest limbaj consacrat se pregătește acum pentru următoarea versiune: PHP 8.3 urmează să fie lansat oficial la sfârșitul lunii. În acest articol trecem prin cele mai importante schimbări aduse de noua versiune.
Validarea JSON regândită: json_validate
Eterna întrebare: este JSON valid sau nu? Până acum, soluția era parsarea întregului șir cu json_decode, urmată de verificarea rezultatului. Noua versiune aduce o schimbare importantă: funcția json_validate. Aceasta oferă același rezultat sigur, dar consumă semnificativ mai puține resurse.
Gestionare unitară a erorilor în unserialize
Funcția unserialize() era cunoscută pentru modul inconsecvent în care raporta erorile – uneori ca E_NOTICE, alteori ca E_WARNING. Versiunea 8.3 schimbă fundamental acest comportament: de acum se aruncă de fiecare dată o excepție, așa că tratarea separată a particularităților lui E_NOTICE nu mai este necesară.
Noul atribut #[Override]
O adăugare valoroasă este atributul #[Override]. Cu el se marchează metodele care ar trebui să suprascrie o metodă din clasa părinte. Dacă metoda din clasa părinte este redenumită, iar metoda marcată cu #[Override] nu mai suprascrie nimic, PHP generează acum o eroare.
Acces dinamic la constantele de clasă
Înainte de versiunea 8.3, constantele de clasă puteau fi accesate doar static sau prin Reflection. Începând cu 8.3, accesul poate fi și dinamic: numele constantei poate fi furnizat printr-o variabilă.
Modificarea proprietăților readonly în __clone()
Într-o versiune anterioară, PHP a introdus proprietățile readonly, care se setează la instanțierea clasei. La clonare însă, aceste proprietăți aveau limitări: era posibilă doar o copie superficială.
Versiunea 8.3 elimină aceste restricții: în cadrul metodei __clone(), proprietățile readonly pot fi acum reinițializate, ceea ce face posibilă o clonare reală. Pe lângă aceste schimbări esențiale, mai există și alte noutăți – de exemplu erori specifice la inițializarea obiectelor DateInterval, precum DateMalformedIntervalStringException, îmbunătățiri ale funcției mb_str_pad și creșteri notabile de performanță pentru array_sum() și array_product().
PHP 8.3 a fost lansat pe 23 noiembrie 2023. Înainte de lansare, versiunea a fost testată în trei versiuni alpha, trei beta și șase release candidate.
O imagine completă a tuturor schimbărilor este disponibilă pe php.net