PHP 8, випущений 26 листопада 2020 року, привніс значні вдосконалення та нові функції в мову, підвищивши продуктивність, читабельність і зручність використання. Ця стаття охоплює найбільш помітні зміни та доповнення в PHP 8.
Компілятор JIT (Just-In-Time).
Що таке JIT?
Компілятор Just-In-Time (JIT) є одним із найважливіших удосконалень у PHP 8. Він покращує продуктивність, компілюючи код під час виконання, потенційно пропонуючи кращу швидкість виконання для завдань, що інтенсивно використовують ЦП.
Як працює JIT
JIT перекладає частини коду на машинну мову під час виконання, яка потім може бути виконана безпосередньо ЦП. Це відрізняється від традиційної інтерпретації, де код виконується лінія-порядковий.
Переваги
- Продуктивність: Значні покращення швидкості виконання завдань, пов’язаних із ЦП.
- Оптимізація: краща продуктивність для додатків, що включають важкі обчислення, наприклад наукові обчислення або обробку даних.
Типи спілок
Визначення
Типи об’єднань дозволяють змінній зберігати більше одного типу. Це доповнення покращує систему типів у PHP, надаючи точніші визначення типів.
Синтаксис
функція foo(int|float $number): int|float { return $number; }
Переваги
- Тип Safety: Зменшує помилки, пов’язані з типом.
- Гнучкість: Більш виразні та гнучкі оголошення типів.
Іменовані аргументи
Визначення
Іменовані аргументи дозволяють передавати аргументи функції на основі імен параметрів замість їхньої позиції.
Синтаксис
функція foo(рядок $a, рядок $b, рядок $c) {} foo(a: 'перший', c: 'третій', b: 'другий');
Переваги
- Читабельність: Робить виклики функцій більш читабельними.
- Гнучкість: Легше працювати з функціями, які мають багато параметрів, особливо зі значеннями за замовчуванням.
Атрибути
Визначення
Атрибути, також відомі як анотації іншими мовами, забезпечують спосіб додавання метаданих до класів, методів, властивостей і параметрів.
Синтаксис
#[ExampleAttribute] class Foo { #[AnotherAttribute] public function bar() {} }
Переваги
- Метадані: надає стандартизований спосіб визначення метаданих.
- Рефлексія: легше працювати з метаданими через API відображення.
Просування нерухомості забудовника
Визначення
Підвищення властивості конструктора спрощує оголошення властивостей класу та ініціалізацію в конструкторах.
Синтаксис
class Point { public function __construct( public float $x, public float $y, public float $z ) {} }
Переваги
- Лаконічність: Зменшує шаблонний код.
- Читабельність: робить визначення класів чіткішими та зрозумілішими.
Вираз відповідності
Визначення
The матч
вираз схожий на перемикач
, але більш потужний і стислий.
Синтаксис
$result = відповідність ($input) { 1 => 'один', 2 => 'два', 3 => 'три', типове => 'невідомо', };
Переваги
- Лаконічність: Більш стисло, ніж
перемикач
. - експресія: Повертає значення на відміну від
перемикач
.
Оператор Nullsafe
Визначення
Оператор nullsafe (?->
) спрощує перевірку нуля під час доступу до властивостей або методів.
Синтаксис
$result = $object?->property?->method();
Переваги
- Простота: Зменшує потребу в кількох перевірках нуля.
- Читабельність: робить код із властивостями або методами, що допускають значення NULL, чистішим.
Покращення обробки помилок
TypeError і ValueError
Представлено PHP 8 TypeError
і ValueError
для кращої обробки помилок. Ці винятки полегшують виявлення та обробку певних типів помилок.
Переваги
- Зернистість: Більш детальна та конкретна обробка помилок.
- Налагодження: легше виявляти та виправляти проблеми.
Слабкі карти
Визначення
Слабкі карти дозволяють зберігати об'єкти, не перешкоджаючи їх вивозу сміття.
Синтаксис
$weakMap = new WeakMap(); $weakMap[$object] = $data;
Переваги
- Управління пам'яттю: Допомагає ефективніше керувати пам’яттю, дозволяючи збирати сміття для невикористаних об’єктів.
- Гнучкість: корисно для кешування та інших сценаріїв, коли керування життєвим циклом об’єкта є критичним.
Інші нові функції та вдосконалення
Помилки узгодженого типу
PHP 8 забезпечує більшу узгодженість помилок типу, полегшуючи розуміння та виправлення проблем, пов’язаних із типами.
Нові рядкові функції
Нові рядкові функції, такі як str_contains
, str_starts_with
, і str_ends_with
, забезпечують більшу зручність і читабельність.
Покращений синтаксис
Різні вдосконалення синтаксису, такі як кінцеві коми в списках параметрів і іменовані параметри, покращують читабельність коду та зручність обслуговування.
Висновок
PHP 8 представляє ряд потужних функцій і вдосконалень, які підвищують продуктивність, читабельність і зручність використання мови. Від компілятора JIT до іменованих аргументів і атрибутів, ці доповнення роблять PHP більш надійною та сучасною мовою, що задовольняє потреби сучасного Інтернету розвитку. Розробникам пропонується досліджувати та використовувати ці нові функції для написання чистішого, ефективнішого та зручного для обслуговування коду.