markelov666
Умник
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
21 ноября 2024 года состоялся релиз PHP 8.4 — значительное обновление языка программирования, привносящее множество новых возможностей и улучшений. Рассмотрим ключевые изменения, представленные в этой версии.
Новая реализация JIT-компилятора
В PHP 8.4 представлена новая реализация JIT-компилятора, основанная на IR Framework. В отличие от предыдущей версии, которая генерировала машинные инструкции напрямую из байткода, новая версия создаёт промежуточное представление (IR), оптимизируемое и преобразуемое в машинные инструкции для различных архитектур. Это обеспечивает унифицированный подход к компиляции и улучшает производительность.
Хуки свойств (Property Hooks)
Добавлена поддержка хуков свойств, позволяющих определять дополнительную логику при доступе или изменении свойств объекта. Это упрощает управление поведением свойств без необходимости использования магических методов
__get и __set или создания дополнительных методов-обёрток. Теперь можно привязывать обработчики непосредственно к каждому свойству, что сокращает объём кода и повышает его читаемость.Асимметричная область видимости свойств
PHP 8.4 вводит возможность задавать разные уровни видимости для операций чтения и записи свойств. Это позволяет, например, сделать свойство доступным для чтения из любого места, но ограничить его изменение только внутри класса или наследников, что повышает инкапсуляцию и безопасность кода.
Обновление DOM API и поддержка HTML5
В новой версии обновлено расширение DOM с поддержкой парсинга и сериализации HTML5. Введён класс
Dom\HTMLDocument, обеспечивающий корректный разбор HTML5-документов в соответствии с современными веб-стандартами. Это упрощает работу с HTML5-разметкой и исправляет давние проблемы совместимости.Новые функции для работы с массивами
PHP 8.4 добавляет функции
array_find(), array_find_key(), array_any() и array_all(), упрощающие поиск и проверку элементов в массивах. Эти функции позволяют более элегантно и эффективно работать с данными, улучшая читаемость и сокращая количество кода.Объектно-ориентированный API для BCMath
Введён класс
BcMath\Number, предоставляющий объектно-ориентированный интерфейс для работы с числами произвольной точности. Это позволяет использовать стандартные математические операторы и улучшает интеграцию с другими объектно-ориентированными компонентами PHP.Другие улучшения
- Атрибут
#[\Deprecated]: позволяет помечать пользовательские функции, методы и константы как устаревшие, предоставляя информацию о версии и сообщении об устаревании. - Упрощённый синтаксис при создании объектов: теперь можно обращаться к методам и свойствам нового объекта без дополнительных скобок, например,
new MyClass()->method(). - Новые функции для работы с многобайтовыми строками: добавлены
mb_trim(),mb_ltrim(),mb_rtrim(),mb_ucfirst()иmb_lcfirst(), упрощающие обработку строк в различных кодировках. - Поддержка «ленивых» объектов: реализована возможность отложенной инициализации объектов до момента их первого использования, что повышает производительность и снижает потребление памяти.
