Группа энтузиастов во главе с датским программистом Лердорформ Расмусом выпустили восьмую версию скриптового языка программирования PHP. Релиз состоялся 26 ноября 2020 года, почти на год раньше, чем планировалось. По сравнению с предыдущей версией PHP 8 получил несколько серьезных улучшений, включая применение JIT-компилятора и существенную доработку «синтаксического сахара», позволяющую уменьшить объем шаблонного кода.
Разработка языка программирования PHP ведется с 1995 года. Основной сферой его применения является разработка динамических веб-сайтов с исполнением кода на серверной стороне. При этом доступна и компиляция программ, написанных на PHP, для исполнения на UNIX-операционных системах и в среде Windows. Существенное влияние на синтаксис PHP оказали несколько языков программирования, включая C++ и Java.
Наиболее существенным изменением в версии PHP 8 стало использование JIT-компилятора. Он позволяет переводить код программы в машинный код в режиме реального времени непосредственно во время исполнения программы. Таким образом для некоторых случаев удается повысить скорость исполнения приложений. В случае с PHP 8 наибольший прирост скорости с помощью JIT-компилятора достигается при выполнении математических операций.
Еще одним практичным улучшением в PHP 8 стало добавление выражения match. В целом оно работает аналогично традиционному switch, однако, в отличие от последнего, использует строгое сравнение значений. При этом результат работы match может быть сохранен в переменную и использован в дальнейшем или возвращен, например, с помощью функции echo. В отличие от switch, выражение match работает с однострочными выражениями, не требующими конструкции break.
В PHP 8 также появились именованные аргументы для использования в библиотеках или ассоциативных массивах. Это нововведение, в отличие от PHP 7, использует самодокументируемые аргументы, что позволяет использовать их в любом порядке, пропуская необязательные параметры. Это положительно сказывается на читаемости кода и его объеме, особенно если речь идет об использовании библиотек, работающих с булевыми параметрами.
Еще в PHP 8 появилась возможность использовать структурные метаданные с нативным синтаксисом PHP вместо аннотаций PHPDoc. Благодаря этому, например, при написании метаданных можно будет использовать подсказки среды разработки. Кроме того, в PHP 8 стали возможными одновременное объявление и инициализация свойств в конструкторе класса. В некоторые случаях это позволяет сократить объем кода втрое.
Наконец, еще одним существенным изменением в PHP 8 стало использование нового оператора Nullsafe, который записывается занком ? после обрабатываемого элемента. Это избавляет, например, от необходимости прописывать проверку на null для каждой переменной, используя вместо этого последовательность вызовов с оператором Nullsafe. В этом случае, если хотя бы один элемент возвращает значение null, вся последовательность вернет null.
С более полным списком нововведений в PHP 8 и документацией по ним можно ознакомится в сообщении о релизе.
Источник: N+1
Валентин
PHP рассматривает переход на новую строку как пробел, так же как HTML и другие языки со свободным форматом. Инструкции разделяются с помощью PHP является языком программирования с динамической типизацией, не требующим указания типа при объявлении переменных, равно как и самого объявления переменных. Преобразования между скалярными типами зачастую осуществляются неявно без дополнительных усилий (впрочем, PHP предоставляет широкие возможности и для явного преобразования типов).