Відкрийте для себе найновіші функції в PHP 8.3

Коли вийде PHP 8.3 і які нові функції він принесе?

Станом на січень 2024 року PHP 8.3 буде останньою версією мови програмування веб-розробки. Завдяки різноманітним удосконаленням для програмістів (таким як типи об’єднань, властивості лише для читання та покращені повідомлення про помилки), скориставшись ними, ви повинні оновити.

Ось погляд на нові функції PHP з деякими кроками щодо їх впровадження на практичних прикладах.

1. Типи об'єднань і типи перетину

У PHP 8.3 помітне оновлення передбачає впровадження типів перетину та типів об’єднання. Такі типи дозволяють програмістам визначати параметри та типи повернення як суміш різних видів, підвищуючи універсальність і довговічність коду.

За допомогою символу вертикальної лінії (|) типи об’єднань дають змогу вказати параметр або значення, що повертається, за допомогою кількох типів. Для ілюстрації припустімо, що у вас є функція, яка може приймати рядок або ціле число; ви можете визначити його параметр у такий спосіб:

 function foo(int|string $param) { // ... }

З іншого боку, за допомогою типів перетину ви можете визначити повертане значення або параметр як комбінацію двох або більше типів. Тому повертане значення або параметр має відповідати всім типам у перетині. Давайте розглянемо приклад:

 function bar(ArrayAccess&Countable $param): int { // ... } 

У цьому прикладі аргумент має бути об’єктом, що реалізує інтерфейси ArrayAccess і Countable, а функція має повертати ціле число.

Тип об’єднання визначається символом вертикальної лінії (|) і дозволяє вказати кілька типів, які може мати параметр або значення, що повертається.

З іншого боку, типи перетину дозволяють визначити параметр або значення, що повертається, як перетин двох або більше типів. Це означає, що параметри або значення, що повертаються, повинні задовольняти всі типи перетинів.

2. Властивості лише для читання

Додавання атрибутів лише для читання в PHP 8.3 є ще одним корисним аспектом. За допомогою цієї властивості можна оголосити властивості лише для читання, що запобігає подальшим змінам їхнього значення та дозволяє ініціалізацію лише один раз.

Ви можете використовувати цю функцію для підвищення безпеки та надійності свого коду шляхом запобігання випадковій зміні важливих даних.

У цьому прикладі PHP 8.3 показано, як визначити властивість лише для читання.

 Class MyClass
{
Public read_only string $name;
Public function__construct(string $title)
{$this->title = $title;
  }
}

У згаданому вище прикладі функція Object() { [власний код] } ініціалізує властивість $name лише один раз. Її можна вказати лише як функцію лише для читання.

3. Розширені повідомлення про помилки

Коли в сценарії PHP виникає фатальна помилка, атрибут Enhanced Error Messages у PHP 8.3 надає докладніші та корисніші повідомлення про помилки. За допомогою цієї функції розробники можуть швидко виявити та вирішити проблеми з кодом.

Під час доступу до невизначеного індексу масиву активуються розширені повідомлення про помилки. У попередніх випусках PHP ви отримували таке повідомлення про помилку:

 Notice: Undefined offset: 4 in /path/to/file.php on line 3 

Це повідомлення про помилку не говорить багато про те, звідки виникла проблема. Однак із розширеними повідомленнями про помилки PHP 8.3 ви отримаєте таке докладніше повідомлення про помилку:

 Fatal error: Uncaught Error: Cannot use string offset as an array in /path/to/file.php:3 Stack trace: #0 {main} thrown in /path/to/file.php on line 3 Notice: Trying to access array offset on the value of type null in /path/to/file.php on line 3 

Це повідомлення про помилку надає трасування стека, щоб допомогти вам визначити джерело проблеми та інформує вас про те, що ви намагаєтеся використати зміщення рядка як масив (одна з багатьох корисних функцій обробки тексту в PHP). Крім того, він інформує вас, що ви намагаєтеся отримати доступ до нульового значення зі зміщення масиву.

Підготуйтеся до PHP 8.3

Перехід до PHP 8.3 має важливе значення для дизайнерів у світлі останніх важливих моментів і вдосконалень. Впровадження типів об’єднання та перетину в PHP 8.3 полегшує програмістам роботу зі складними типами даних.

Запобігаючи ненавмисним змінам важливих даних, властивості лише для читання також підвищують надійність коду. Загалом, оновлення до PHP 8.3 надає розробникам доступ до більш потужних і адаптованих інструментів для створення високопродуктивних веб-додатків із фреймворками, такими як Laravel.