Началось альфа-тестирование PHP 8.4

Представлен первый альфа-выпуск новой ветки языка программирования 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).
Release. Ссылка here.