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 7.4


PHP 7 в порівнянні з попередніми версіями значно швидше, і це доведено багатьма тестами, наприклад:

Збільшення швидкості виконання запитів в 2 рази більше в порівнянні з PHP 5.6 (офіційні дані).

 Крістіан Віг зробив порівняння, в ході якого виявлено, що PHP 5.2 на 400% повільніше, ніж PHP 7.

 Андрій Аврам порівнював PHP 7.4 і 7.3, більш швидке виконання і менше використання пам'яті якраз в оновленій версії.

  Phoronix зробили спеціальне тестування і виявили, що PHP 7.4 Alpha трохи швидше PHP 7.3.