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

in #ru5 days ago

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

  • Реализован класс \Dom\HTMLDocument, поддерживающий корректный разбор разметки HTML5.

  • Добавлена функция request_parse_body() для разбора HTTP-запросов с типом контента multipart/form-data (RFC1867).

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

Coin Marketplace

STEEM 0.18
TRX 0.13
JST 0.029
BTC 57831.03
ETH 3136.64
USDT 1.00
SBD 2.42