«> PHP 8 — самая важная информация о новой версии PHP Автор: Denis PeszkaTech Lead Опубликовано: 02-03-2021 Категория: Drupal
Внутри Мы видели много новых версий PHP за последние годы — в конце концов, рассматриваемому языку уже 26 лет, но время от времени появляются прорывные обновления, и такие обновления включают последнюю версию, то есть PHP 8. Новая версия была опубликована 26 ноября 2020 г. и ориентирована на внедрение множества полезных функций. На какие из них стоит обратить внимание? Вы узнаете из этой статьи.
PHP 8 — лучшая производительность
В последней версии явно улучшена производительность. Как именно они представлены? Обратите внимание на следующие тесты, выполненные PHP Benchmarks:
Двумя наиболее важными элементами из приведенных выше оценок для PHP 8 являются :
Результат на 2,6% лучше, чем у PHP 7.4. На 48% результат лучше, чем у PHP 5.6.
Улучшение заметно, хотя в истории этого языка были большие скачки в различных приложениях. Но перейдем к самому главному, новейшим функциям.
1. JIT — компилятор Just In Time
Язык PHP работает в реальном времени, и его код не компилируется, а конвертируется параллельно с самим выполнением. Это способствует более медленной работе. Компилятор JIT стремится изменить это, действуя каким-то образом в качестве моста между двумя процессами. Он компилирует и кэширует некоторые разделы кода во время выполнения, так что скомпилированную версию можно использовать вместо интерпретируемой версии. Однако эта новинка не очень важна в случае веб-сайтов, поскольку описанный выше процесс будет полезен в основном в других приложениях, таких как трехмерная графика.
2. Union
Объединение касается определения набора типов для входных и возвращаемых данных. До сих пор PHP не разрешал их использование по умолчанию, поэтому они были реализованы «повсюду» путем определения этих типов в аннотациях. В новой версии PHP объявлять больше типов объединения будет намного проще.
3. Продвижение свойств конструктора
Еще одна новая функция — улучшить процесс объектно-ориентированного программирования в PHP. RFC Constructor Property Promotion предлагает новый, более сжатый синтаксис, чтобы упростить объявление свойства, сделав его более кратким. Это изменение затрагивает только определенные параметры, которым предшествуют ключевые слова public, protected и private.
До сих пор все такие свойства приходилось повторять в коде как минимум четыре раза, прежде чем их можно было использовать с объектами. Этот синтаксис не особенно полезен, особенно в классах с большим количеством свойств и более описательными именами. Поэтому RFC предлагает объединить конструктор и определение параметра, чтобы сделать код более читаемым и менее подверженным ошибкам.
4. Выражения соответствия
Следующим элементом последней версии PHP является улучшение синтаксиса. Выражения соответствия похожи на переключение совпадений, но в некоторых отношениях они даже лучше:
Match сначала учитывает результат выражения, поэтому разработчику не нужно устанавливать соответствующую переменную в каждом случае. Никакого принуждения типа, как в случае совпадений переключателей. Ключевое слово break по умолчанию помещается после каждого плеча, поэтому вы не столкнетесь с неожиданными проблемами, если забудете перерыв. 5. Атрибуты v2
Атрибуты, также известные как аннотации, представляют собой форму структурированных метаданных, которые можно использовать для определения свойств объектов, элементов или файлов. До PHP 7.4 doc-комментарии были единственным способом добавления метаданных к объявлениям классов, функций и т. Д. Новинка заключается в добавлении атрибутов в PHP, определяющих их как форму структурированных синтаксических метаданных, которые могут быть добавлены к классу, свойству и т. Д. объявления функций., методы, параметры и константы.
6. WeakMaps — слабые карты
WeakMap основан на WeakRefs с PHP 7.4. WeakMap хранит ссылки на объекты, которые не препятствуют сборке мусора для этих объектов. Эта новая функция в PHP 8 полезна, например, для объектно-реляционного сопоставления (ORM).
В этом процессе часто реализуются кеши для хранения ссылок на классы сторон, чтобы улучшить производительность взаимоотношений между сторонами. Они не могут быть выброшены как мусор, если кеш ссылается на них, даже если память является единственным фактором, который ссылается на них.
Если кеширование использует слабые ссылки и карты, PHP удалит эти объекты, когда на них не будет ссылаться ничто другое. их. По этой причине для ORM, которые могут управлять тысячами объектов за один запрос, слабые карты могут предложить лучший и более ресурсосберегающий способ работы с этими объектами.
7. Наследование для частных методов
Последние версии PHP использовали одни и те же проверки наследования для общедоступных, защищенных и частных методов. В результате к частным методам применялись те же правила подписи методов, что и к защищенным и общедоступным методам. Этот подход не имеет смысла, поскольку частные методы никогда не доступны для дочерних классов. В последней версии было внесено изменение в это поведение, так что эти проверки наследования больше не выполняются для частных методов. Кроме того, также не имело смысла использовать final приватную функцию, поэтому введение этой функции вернет предупреждение:
Предупреждение: закрытые методы не могут быть окончательными, поскольку они никогда не переопределяются другими классами.
Последняя версия PHP — общие исправления
Вызов исключений TypeError и ValueError является встроенной функцией. Кроме того, значительно улучшены процессы сравнения переменных разных типов и проверки типов для побитовых и арифметических операций. Он также изменил принцип работы функций array_key_exists () и define (). В свою очередь, функции create_function () и each () были удалены. Когда дело доходит до отчетов об ошибках, оператор @ больше не маскирует фатальные ошибки, и значение по умолчанию для таких отчетов — E_ALL.
Новая версия PHP — сводка
Можно сказать, что целью PHP 8 является организовать все ответственные элементы таким образом, чтобы его работа была проще и не запутывала. Новые функции, такие как JIT, вероятно, найдут интересное приложение, хотя нам придется подождать, пока мы не увидим их полный потенциал.
https://smartbees.pl/blog/php-8-najwazniejsze-informacje-o-nowej-wersji-php