Откройте для себя новейшие возможности 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.