Відмінності від об'єктів

Хоча перерахування побудовані на класах та об'єктах, вони не підтримують повну об'єктно-пов'язану функціональність. Як приклад, варіантів перерахувань не дозволені стани.

  • Конструктори та деструктори заборонені.
  • Спадкування не підтримується. Перелікам не можна успадковувати або успадковуватись.
  • Статичні властивості чи властивості об'єкта не допускаються.
  • Клонування варіанта перерахування не підтримується, оскільки варіанти мають бути одноелементними екземплярами.
  • Магические методы , крім наведених нижче, заборонені.
  • Переліки мають бути оголошені до початку роботи з ними.

Перелікам доступні такі функціональні можливості об'єкта з аналогічною поведінкою:

  • Методи 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...