PHP 7.4. Что нового?

Времени к выходу новой версии осталось совсем немного. Поэтому давайте рассмотрим основные обновления в новом релизе PHP 7.4, выход которого запланирован на 28 ноября 2019 года. Этот релиз должен еще раз повысить производительность и улучшить читаемость и, конечно же, удобство сопровождения кода. 

Вместо array_merge: в PHP 7.4 будет оператор Spread.

Именно Spread должен предоставить еще лучшую производительность по сравнению с array_merge. Этот оператор распространения является языковой структурой, в том числе оптимизация времени компиляции может быть выполнена для постоянных массивов. Spread также имеет поддержку любых перемещаемых объектов, используемая на данный момент array_merge поддерживает исключительно массивы.

Стрелочные функции 2.0 или короткие замыкания.

Анонимные функции очень сложные в процессе реализации и поддержки PHP. В данном релизе предложено ввести более короткий синтаксис стрелочных функций (или коротких замыканий). Это очистит PHP-код. Данное нововведение улучшит сам язык и сделает его более читаемым и простым в процессе обслуживания. Можно использовать параметры и возвращаемые типы , значения по умолчанию, списки аргументов переменной длины, передавать и возвращать по ссылке и тп.

Типизированные Свойства 2.0.

Начиная с версии PHP 7.2 можно использовать подсказки с object типом данных. А уже в PHP 7.4 добавляется поддержка объявлений типов свойств первого класса.

Слабые ссылки.

В PHP 7.4 вводится класс WeakReference. Именно он предоставляет возможность сохранять ссылку на объект, который не мешает запуску процесса уничтожения самого объекта. Сейчас PHP поддерживает Weak References, с расширением pecl-weakref. Поэтому новый API обладает набором отличий от документированного WeakRefкласса.

Предзагрузка (PHP Preloading).

Данное нововведение как раз должно повысить показатели производительности. Что такое предварительная загрузка? Это по сути загрузка библиотек и фреймворков в OPCache при инициализации модуля. Когда происходит запуск сервера и любого кода приложения, можно загрузить PHP файлы в память, а далее сделать их доступными на постоянной основе для всех запросов после - для этого сервера. Все функции и классы этих файлов будут доступны для запросов из коробки, как и внутренние объекты.

Предварительная загрузка имеет управление от php.ini директивы: opcache.preload. Она ведет на PHP-скрипт, который компилируется и выполняется при запуске сервера. Файл также предназначен для предварительной загрузки доп. файлов, включая их или через opcache_compile_file()функцию. Более детальную информацию можно найти в документации PHP на официальных ресурсах.

С другой стороны это означает, что предварительно загруженные файлы остаются в кеше в памяти opcache навсегда. Модификация их соответствующих исходных файлов не будет иметь никакого эффекта без перезапуска другого сервера. Весь функционал загруженных файлов будет постоянно находится в специальных таблицах функций и классов PHP и будет доступен для последующих запросов.  В целом это должно улучшить показатели производительности. 

Это, конечно же, еще не все нововведения в PHP 7.4. Их на самом деле намного больше и все они направлены на то, чтобы сделать язык еще более производительным. На данный момент на нашем хостинге уже доступна версия PHP 7.4 на всех тарифах. 

Купить PHP хостинг

PHP 7 по сравнению с предыдущими версиями значительно быстрее и это доказано множествами тестов, например: