Началось альфа-тестирование 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).

Источник: http://www.opennet.ru/opennews/art.shtml?num=61499