Відмінності від об'єктів
Хоча перерахування побудовані на класах та об'єктах, вони не підтримують повну об'єктно-пов'язану функціональність. Як приклад, варіантів перерахувань не дозволені стани.
- Конструктори та деструктори заборонені.
- Спадкування не підтримується. Перелікам не можна успадковувати або успадковуватись.
- Статичні властивості чи властивості об'єкта не допускаються.
- Клонування варіанта перерахування не підтримується, оскільки варіанти мають бути одноелементними екземплярами.
- Магические методы , крім наведених нижче, заборонені.
- Переліки мають бути оголошені до початку роботи з ними.
Перелікам доступні такі функціональні можливості об'єкта з аналогічною поведінкою:
- Методи public, private і protected.
- Статичні методи public, private і protected.
- Константи public, private і protected.
- Перелікам дозволено продавати будь-яку кількість інтерфейсів.
- До перерахувань та варіантів дозволено додаватиатрибути. Цільовий фільтр**
TARGET_CLASS
включає самі перерахування. Цільовий фільтрTARGET_CLASS_CONST
**включає варіанти перерахувань. - Магічні методи__call __callStatic, и__invoke
- Константи **
__CLASS__
** і **__FUNCTION__
**поводяться як завжди.
Магічна константа ::class
для типу перерахування оцінюється як назва перерахування, включаючи будь-який простір імен, так само, як об'єкт. Магічна константа ::class
в екземплярі варіанта також оцінюється як тип перерахування, оскільки вона екземпляр цього типу.
Крім того, варіанти переліку не можна створювати через ключове слово new
або методом ReflectionClass::newInstanceWithoutConstructor()Оба способа приведут к ошибке.
Loading...