Predstavljen je prvi alfa-izdaja nove veje programskega jezika PHP 8.4. Izdaja je načrtovana za 21. november. Glavne novosti, že dostopne za testiranje ali načrtovane za implementacijo v PHP 8.4:
- Dodana je podpora za pripenjanje obdelovalcev lastnosti (property hook), ki omogočajo dodajanje dodatne logike, ki se izvede ob spremembi ali dostopu do lastnosti objekta, izvedene brez prestrezanja operacij branja in pisanja s pomočjo skupnih funkcij __get in __set, ter brez ustvarjanja dodatnih metod-ovijalo. Uporaba obdelovalcev lastnosti omogoča bistveno zmanjšanje obsega kode in poenostavitev predefiniranega obnašanja pri delu z lastnostmi, zahvaljujoč vezavi lastnega obdelovalca na each property. class User { public string $name { set { if (strlen($value) === 0) { throw new ValueError("Ime mora biti ne-prazno"); } $this->name = $value; } } public function __construct(string $name) { $this->name = $name; } }
- Dovoljeno je navajanje povezav na metode v konstrukciji "new" brez ločilnih oklepajev, torej namesto "name = (new MyClass())->method()" lahko zdaj navajate "name = new MyClass()->method()".
- Namesto splošnega parametra "opcache.jit_buffer_size" za upravljanje JIT-kompilatorja in nastavitev velikosti JIT predpomnilnika so bili predlagani parametri "opcache.jit" in "opcache.jit_buffer_size". Za onemogočanje JIT lahko zdaj navedete "opcache.jit=disable" namesto "opcache.jit_buffer_size=0". Poleg tega so bile opravljene spremembe, ki zmanjšujejo porabo pomnilnika in povečujejo zmogljivost JIT v nekaterih situacijah.
- Obnašanje, pri katerem so za parametre funkcij s privzetim dodeljenim vrednostim null samodejno dovolili dodelitev vrednosti null, je razglašeno za zastarelo. Da bi takšni parametri lahko sprejemali vrednosti null, je zdaj potrebno jasno navesti predpono "?". Na primer, namesto "function save(Book $book = null) {}" bi bilo treba navesti "function save(?Book $book = null) {}".
- Izveden je razred \Dom\HTMLDocument, ki podpira pravilno razčlenjevanje HTML5 označevanja.
- Dodana je funkcija request_parse_body() za razčlenjevanje HTTP zahtevkov s tipom vsebine multipart/form-data (RFC1867).
Izvor: opennet.ru
