Основи перерахувань
Перерахування схожі на класи і працюють із тими самими просторами імен, що й класи, інтерфейси та трейти. Їх, як і класи, можна завантажувати автоматично. Переліки визначають новий тип із фіксованою обмеженою кількістю можливих допустимих значень.
Loading...
Це оголошення створює новий тип з ім'ям. Suit
, у якого чотири і лише чотири допустимі значення: Suit::Hearts
Suit::Diamonds
Suit::Clubs
иSuit::Spades
. Змінним може бути надано одне з цих допустимих значень. Функція може перевірити тип аргументу відповідність типу перерахування і можна передати лише значення заданого типу.
Loading...
У перерахунку може бути нуль або більше визначень case
максимальна кількість не обмежена. Перерахування без варіантів синтаксично коректне, хоч і марне.
Для варіантів перерахування працюють ті самі правила синтаксису, що і для будь-якої мітки в PHP, дивіться Константи
За промовчанням варіанти не підтримуються скалярним значенням. Тобто Suit::Hearts
не дорівнює «0»
. Натомість кожен варіант підтримується одноелементним об'єктом з таким ім'ям. Тобто:
Loading...
Це також означає, що значення переліку не будуть <
или>
один з одного, оскільки ці порівняння немає сенсу для об'єктів. Порівняння завжди повертатимуть **false
**при работе с вариантами перечисления.
Тип варіанта без зв'язаних даних називається "Чистий варіант" (Pure Case). Перелік, який містить лише чисті варіанти, називається чистим перерахуванням (Pure Enum).
Усі чисті варіанти реалізовані як екземпляри свого типу перерахування. Тип переліку внутрішньо представлений як клас.
Всі варіанти мають доступну тільки для читання властивість name
— це й чутливе до регістру ім'я варіанта.
Loading...
Можна також користуватися функціями defined() і constant() для перевірки існування чи читання регістру перерахування, якщо ім'я отримано динамічно. Однак чинити так не рекомендовано, оскільки в більшій частині ситуацій краще працювати з типізованими перерахуваннями