Представлен первый альфа-выпуск новой ветки языка программирования PHP 8.4. Релиз намечен на 21 ноября. Основные новшества, уже доступные для тестирования или планируемые к реализации в PHP 8.4:
- Добавлена поддержка прикрепления обработчиков свойств (property hook), позволяющих добавить дополнительную логику, выполняемую при изменении или доступе к свойствам объекта, реализуемую без перехвата операций чтения и записи при помощи общих функций __get и __set, и без создания дополнительных методов-обвязок. Применение обработчиков свойств даёт возможность существенно сократить объём кода и упростить переопределение поведения работы со свойствами, благодаря привязке собственного обработчика к каждому свойству.
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; } }
- Разрешено указание ссылок на методы в конструкции «new» без отделяющих скобок, т.е. вместо «$name = (new MyClass())->method()» теперь можно
указывать «$name = new MyClass()->method()». - Вместо общего параметра «opcache.jit_buffer_size» для управления JIT-компилятором и настройки размера буфера JIT предложены параметры «opcache.jit» и «opcache.jit_buffer_size». Для отключения JIT теперь можно указывать «opcache.jit=disable» вместо «opcache.jit_buffer_size=0». Кроме того, внесены изменения, снижающие потребление памяти и повышающие производительность JIT в некоторых ситуациях.
- Объявлено устаревшим поведение, при котором для параметров функций с присвоенным по умолчанию значением null автоматически разрешалось присвоение значений null. Для того, чтобы подобные параметры могли принимать значения null теперь требуется явное указание префикса «?».
Например, вместо «function save(Book $book = null) {}» следует указывать «function save(?Book $book = null) {}». - Реализован класс DomHTMLDocument, поддерживающий корректный разбор разметки HTML5.
- Добавлена функция request_parse_body() для разбора HTTP-запросов с типом контента multipart/form-data (RFC1867).
Источник: http://www.opennet.ru/opennews/art.shtml?num=61499