Новая версия содержит множество новых возможностей, таких как хуки свойств, асимметричная область видимости свойств, обновление DOM API, улучшена производительность, исправлены ошибки и многое другое.
Основные изменения
- Хуки свойств обеспечивают поддержку вычисляемых свойств, которые могут быть понятны IDE и инструментам статического анализа, без необходимости писать DocBlock-комментарии, которые могут не совпадать. Кроме того, они позволяют выполнять надёжную предварительную или последующую обработку значений, без необходимости проверять, существует ли в классе соответствующий геттер или сеттер.
- Асимметричная область видимости записи свойства теперь может контролироваться независимо от области видимости чтения свойства, что уменьшает необходимость использования шаблонных методов-геттеров для раскрытия значения свойства без возможности его изменения извне класса.
- Новый атрибут
#[\Deprecated]
расширяет существующий механизм объявления сущности устаревшей для пользовательских функций, методов и констант классов. - Новый DOM API, который поддерживает разбор HTML5-документов в соответствии со стандартами, исправляет несколько давних ошибок в поведении DOM и добавляет несколько функций, делающих работу с документами более удобной. DOM API доступен в пространстве имён Dom. Документы, использующие новый DOM API, могут быть созданы с помощью классов
Dom\HTMLDocument
иDom\XMLDocument
. - Новый объект
BcMath\Number
позволяет использовать объектно-ориентированный стиль и стандартные математические операторы при работе с числами произвольной точности. Эти объекты неизменяемы и реализуют интерфейсStringable
, поэтому их можно использовать в строковых контекстах, например,echo $num
. - Добавлены функции
array_find()
,array_find_key()
,array_any()
иarray_all()
. - Добавлены дочерние классы
Pdo\Dblib
,Pdo\Firebird
,Pdo\MySql
,Pdo\Odbc
,Pdo\Pgsql
,Pdo\Sqlite
драйверов, наследующие PDO. - К свойствам и методам только что инициализированного объекта теперь можно обращаться, не оборачивая выражение
new
в круглые скобки. Пример:new MyClass()->method()
без скобок. - Новые классы, интерфейсы и функции и многое другое…
>>> Подробности