PHP 8.4.0 RC4 available for testing

Система типов

Язык PHP использует систему номинальных типов с сильным отношением поведенческого подтипирования. PHP проверяет отношение подтипов во время компиляции, тогда как контроль типов язык выполняет динамически во время выполнения.

Система типов данных в PHP поддерживает атомарные типы, которые разрешено объединять, чтобы создавать сложные типы. Часть этих типов допустимо записывать в объявлениях типов.

Атомарные типы

Отдельные атомарные типы — встроенные типы, которые тесно интегрированы с языком и которые невозможно воспроизвести пользовательским определением типов.

Список базовых типов:

Скалярные типы

PHP считает значение скалярным, если значение принадлежит типу int, float, string или bool.

Пользовательские типы

Язык разрешает определять пользовательские типы данных через интерфейсы, классы и перечисления. PHP рассматривает пользовательские типы как типы классов. Приведём пример. Язык разрешает определить класс с названием Elephant, затем создать объект с типом Elephant, а потом определить функцию с параметром, который ждёт аргумент с типом Elephant.

Составные типы

Возможно объединение нескольких атомарных типов в составные типы. PHP разрешает объединять типы следующими способами:

  • Пересечение класс-типов (интерфейсов и названий классов).
  • Объединение типов.

Пересечение типов

Пересечение типов принимает значения, которые удовлетворяют не одному, а одновременно нескольким объявлениям класс-типов. Отдельные пересекающиеся типы соединяются символом &. Поэтому пересечение типов T, U и V, будет записано как T&U&V.

Объединение типов

Объединение типов принимает значения нескольких отличающихся типов, а не одного. Отдельные объединяемые типы соединяются символом |. Поэтому объединение типов T, U и V, будет записано как T|U|V. Если при объединении типов добавляют пересечение типов, то пересечение типов берут в скобки для записи в дизъюнктивной нормальной форме (DNF): T|(X&Y).

Псевдонимы типов

PHP поддерживает два псевдонима типов: mixed и iterable, которые соответствуют (в том же порядке) объединению типов object|resource|array|string|float|int|bool|null и Traversable|array.

Замечание: PHP не поддерживает определяемые пользователем псевдонимы типов.

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top