Predstavljen je prvi alfa-izdanje nove grane programskog jezika PHP 8.4. Izdanje je zakazano za 21. novembar. Glavne novine, koje su već dostupne za testiranje ili planirane za implementaciju u PHP 8.4:
- Dodana je podrška za dodavanje rukovatelja svojstava (property hook), što omogućava dodavanje dodatne logike koja se izvršava prilikom promjene ili pristupa svojstvima objekta, implementirajući se bez hvatanja operacija čitanja i pisanja pomoću općih funkcija __get i __set, i bez kreiranja dodatnih metoda-obloznika. Korištenje rukovatelja svojstava omogućuje značajno smanjenje obima koda i pojednostavljuje redefiniranja ponašanja rada sa svojstvima, zahvaljujući vezivanju vlastitog rukovatelja za svako svojstvo. 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; } }
- Dozvoljeno je navođenje referenci na metode u konstrukciji „new“ bez razdvojenih zagrada, tj. umjesto „$name = (new MyClass())->method()“ sada se može navesti „$name = new MyClass()->method()“.
- Umjesto općeg parametra „opcache.jit_buffer_size“ za upravljanje JIT-kompajlerom i podešavanje veličine JIT bafer, ponuđeni su parametri „opcache.jit“ i „opcache.jit_buffer_size“. Za deaktiviranje JIT-a sada se može navesti „opcache.jit=disable“ umjesto „opcache.jit_buffer_size=0“. Pored toga, izvršene su izmjene koje smanjuju potrošnju memorije i povećavaju performanse JIT-a u određenim situacijama.
- Označeno je zastarjelim ponašanje u kojem su parametri funkcija s automatski dodijeljenom vrijednosti null automatski prihvatali dodjelu vrijednosti null. Kako bi takvi parametri mogli primati vrijednosti null, sada je potrebno eksplicitno navesti prefiks „?“. Na primjer, umjesto „function save(Book $book = null) {}“ trebalo bi navesti „function save(?Book $book = null) {}“.
- Implementirana je klasa \Dom\HTMLDocument, koja podržava ispravno parsiranje HTML5 markup-a.
- Dodana je funkcija request_parse_body() za parsiranje HTTP zahtjeva s tipom sadržaja multipart/form-data (RFC1867).
Izvor: opennet.ru
