Esimene alfa-versioon uue PHP 8.4 programmeerimiskeele haru jaoks on välja antud. Väljalase on planeeritud 21. novembriks. Oluline uudis, mis on juba testimiseks saadaval või mida on plaanis ellu viia PHP 8.4-s:
- Lisatud on tugi omaduste käitlejate (property hook) kinnitamiseks, mis võimaldavad lisada täiendavat loogikat, mis käivitatakse objekti omaduste muutmise või neile juurdepääsu ajal, ilma lugemis- ja kirjutamisoperatsioonide püüdmiseks tavaliste funktsioonide __get ja __set kasutamiseta ning täiendavate sidumismeetodite loomata. Omaduste käitlejate rakendamine võimaldab oluliselt vähendada koodi mahtu ja lihtsustada omaduste käitumise ümberdefineerimist, sidudes oma käitleja iga omadusega. class User { public string $name { set { if (strlen($value) === 0) { throw new ValueError("Name must be non-empty"); } $this->name = $value; } } public function __construct(string $name) { $this->name = $name; } }
- On lubatud viidata meetoditele konstruktsioonis „new” ilma eraldusmärkideta, st asemel, et kirjutada „$name = (new MyClass())->method()”, on nüüd võimalik kirjutada „$name = new MyClass()->method()”.
- JIT-kompilaatori juhtimiseks ja JIT-puhvri suuruse seadmiseks on üldise parameetri «opcache.jit_buffer_size» asemel pakutud parameetreid «opcache.jit» ja «opcache.jit_buffer_size». JIT-i keelamiseks on nüüd võimalik määrata «opcache.jit=disable» asemel «opcache.jit_buffer_size=0». Samuti on tehtud muudatusi, mis vähendavad mälu kasutamist ja suurendavad JIT-i jõudlust teatud olukordades.
- On kuulutatud aegunuks käitumine, kus funktsioonide parameetritele, mille jaoks oli määratud vaikeväärtus null, lubati automaatselt määrata null. Nüüd, et sellised parameetrid saaksid võtta null-väärtusi, nõutakse selget prefiksi „?“. Näiteks tuleks kirjutada „function save(Book $book = null) {}“ asemel „function save(?Book $book = null) {}“.
- Rakendatud on klass \Dom\HTMLDocument, mis toetab HTML5 märgendi korrektset tõlgendamist.
- Lisatud on funktsioon request_parse_body(), et analüüsida HTTP-päringuid, mille sisu tüüp on multipart/form-data (RFC1867).
Allikas: opennet.ru
