Zaprezentowano pierwszą wersję alpha nowej gałęzi języka programowania PHP 8.4. Premiera zaplanowana jest na 21 listopada. Główne nowości, już dostępne do testowania lub planowane do wdrożenia w PHP 8.4:
- Dodano wsparcie dla przyłączania hooków właściwości (property hook), umożliwiających dodanie dodatkowej logiki, wykonywanej podczas zmiany lub dostępu do właściwości obiektu, wdrażanej bez przechwytywania operacji odczytu i zapisu za pomocą ogólnych funkcji __get i __set, oraz bez tworzenia dodatkowych metod-wraperów. Zastosowanie hooków właściwości pozwala znacznie skrócić objętość kodu oraz uprościć nadpisywanie zachowań związanych z właściwościami, dzięki powiązaniu własnego hooka z każdą właściwością. 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; } }
- Zezwolono na wskazywanie odwołań do metod w konstrukcji „new” bez oddzielających nawiasów, tzn. zamiast „$name = (new MyClass())->method()” teraz można podawać „$name = new MyClass()->method()”.
- Zamiast ogólnego parametru „opcache.jit_buffer_size” do zarządzania kompilatorem JIT i ustawiania rozmiaru bufora JIT zaproponowano parametry „opcache.jit” i „opcache.jit_buffer_size”. Aby wyłączyć JIT, teraz można podać „opcache.jit=disable” zamiast „opcache.jit_buffer_size=0”. Ponadto wprowadzono zmiany, które zmniejszają zużycie pamięci i zwiększają wydajność JIT w niektórych sytuacjach.
- Zostało ogłoszone przestarzałe zachowanie, w którym dla parametrów funkcji z przypisaną domyślną wartością null automatycznie zezwalano na przypisanie wartości null. Aby takie parametry mogły przyjmować wartości null, teraz wymagana jest wyraźna wskazówka prefiksu „?”. Na przykład, zamiast „function save(Book $book = null) {}” należy podać „function save(?Book $book = null) {}”.
- Zrealizowano klasę \Dom\HTMLDocument, wspierającą poprawne analizowanie znaczników HTML5.
- Dodano funkcję request_parse_body() do analizy żądań HTTP z typem zawartości multipart/form-data (RFC1867).
Źródło: opennet.ru
