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 в порівнянні з попередніми версіями значно швидше, і це доведено багатьма тестами, наприклад:
Збільшення швидкості виконання запитів в 2 рази більше в порівнянні з PHP 5.6 (офіційні дані).
Крістіан Віг зробив порівняння, в ході якого виявлено, що PHP 5.2 на 400% повільніше, ніж PHP 7.
Андрій Аврам порівнював PHP 7.4 і 7.3, більш швидке виконання і менше використання пам'яті якраз в оновленій версії.
Phoronix зробили спеціальне тестування і виявили, що PHP 7.4 Alpha трохи швидше PHP 7.3.