Language nerds - PHP. Ce aduce nou versiunea 8.3
Versiunea 8.3 a limbajului PHP va fi lansată pe 23 noiembrie, la ce să ne așteptăm
Am un istoric lung, cu limbajul PHP. Am scris și rescris mii de linii de cod, și este un limbaj foarte bun. A ajuns acum la versiunea 8.3, care se va lansa oficial la sfârșitul lunii. În acest articol voi explora cele mai importante schimbări aduse de această versiune.
Validare JSON cu json_validate
O fi json, sau nu o fi json? Ca să afli treci prin parser - json_decode
, și dacă trece e valid! Dar n-ar trebui să fie nevoie să parsezi toată informația ca să verifici dacă e validă, așa că noua versiune introduce funcția de json_validate
, care desigur folosește mult mai puține resurse:
Gestionarea mai ușoară a erorilor din unserialize
Funcția unserialize()
este notorie pentru inconsistența cu care lansează erori: de la E_NOTICE la E_WARNING, poate arunca un o Exception
sau un Error
care amândouă implementează Throwable
. Cu update-ul 8.3, funcția va arunca de fiecare dată, eliminând necesitatea de a trata cazul unui E_NOTICE:
Atributul #[Override]
O adiție foarte utilă, care permite detecția metodelor care suprascriu metoda cu același nume din clasa părinte. Mai degrabă utilitatea acestui atribut, este să dea eroare când metoda din clasa părinte și-a schimbat numele, și în consecință metoda etichetată cu #Override
nu mai suprascrie nimic:
Referințe dinamice către constantele claselor
Înainte de 8.3, constantele claselor putea fi încărcate doar static sau folosind Reflection1:
Cu 8.3, putem încărca aceste constante dinamic, cu interpolare de variabile:
Modificarea proprietăților read-only în scopul __clone()
Într-o versiunea anterioară, PHP a primit posibilitatea de a declara proprietăți readonly
la declararea claselor, însă la clonare acestea nu puteau fi modificate sau inițializate cu noi valori, făcând posibilă doar clonarea superficială. Dar cu noua versiune aceste proprietăți vor putea fi clonate efectiv în contextul metodei __clone()
:
Alte schimbări, includ introducerea de erori specifice la inițializarea obiectelor de tip DateInterval, cum ar fi DateMalformedIntervalStringException
, funcția mb_str_pad
, și îmbunătățiri de performanță pentru array_sum()
și array_product().
Dacă doriți să puteți consulta toată lista de schimbări pe https://www.zend.com/blog/php-8-3.
https://www.php.net/manual/en/intro.reflection.php