A fost prezentat primul alpha release al noului ramificări al limbajului de programare PHP 8.4. Lansarea este planificată pentru 21 noiembrie. Principalele noutăți, deja disponibile pentru testare sau planificate pentru implementare în PHP 8.4:
- A fost adăugată suportul pentru atașarea handler-elor de proprietăți (property hook), care permit adăugarea unei logici suplimentare, executată la modificarea sau accesarea proprietăților unui obiect, implementată fără interceptarea operatiunilor de citire și scriere prin funcțiile generale __get și __set, și fără crearea de metode de învăluire suplimentare. Utilizarea handler-elor de proprietăți permite reducerea semnificativă a volumului de cod și simplificarea redefinirii comportamentului de lucru cu proprietățile, datorită atașării propriului handler la fiecare proprietate. 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; } }
- Este permisă specificarea referințelor la metode în construcția „new” fără paranteze separatoare, adică în loc de „$name = (new MyClass())->method()” acum se poate specifica „$name = new MyClass()->method()”.
- În loc de parametrul general „opcache.jit_buffer_size” pentru gestionarea JIT-compiler-ului și configurarea dimensiunii buffer-ului JIT, au fost propuse parametrii „opcache.jit” și „opcache.jit_buffer_size”. Pentru a dezactiva JIT, acum se poate specifica „opcache.jit=disable” în loc de „opcache.jit_buffer_size=0”. În plus, au fost aduse modificări care reduc consumul de memorie și cresc performanța JIT în anumite situații.
- A fost declarat obsolescența comportamentului prin care parametrii funcțiilor cu o valoare implicită de null urmau să fie acceptați automat cu valori null. Pentru ca acești parametri să poată accepta valori null, acum se cere specificarea explicită a prefixului „?”. De exemplu, în loc de „function save(Book $book = null) {}” ar trebui să se specifice „function save(?Book $book = null) {}”.
- A fost implementată clasa \Dom\HTMLDocument, care suportă analiza corectă a markup-ului HTML5.
- A fost adăugată funcția request_parse_body() pentru analiza cererilor HTTP cu tip de conținut multipart/form-data (RFC1867).
Sursa: opennet.ro
