Дата публикации:Sat, 06 Jul 2024 10:41:37 +0300
Представлен первый альфа-выпуск новой ветки языка программирования 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).
Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=61499