Aunque las enumeraciones están construidas sobre clases y objetos, no admiten toda la funcionalidad relacionada con objetos. En particular, los casos de enumeración tienen prohibido tener estado.
La siguiente funcionalidad de objetos está disponible y se comporta igual que en cualquier otro objeto:
TARGET_CLASS
incluye las enumeraciones en sí. El filtro de destino TARGET_CLASS_CONST
incluye los Casos de Enumeración.
__CLASS__
y __FUNCTION__
se comportan normalmente
La constante mágica ::class
en un tipo de enumeración se evalúa al nombre
del tipo incluyendo cualquier espacio de nombres, exactamente igual que un objeto. La constante mágica ::class
en una instancia de Caso también se evalúa al tipo de enumeración, ya que es una
instancia de ese tipo.
Además, los casos de enumeración no pueden ser instanciados directamente con new
, ni con
ReflectionClass::newInstanceWithoutConstructor() en reflexión. Ambos resultarán en un error.
<?php
$clovers = new Suit();
// Error: No se puede instanciar la enumeración Suit
$horseshoes = (new ReflectionClass(Suit::class))->newInstanceWithoutConstructor()
// Error: No se puede instanciar la enumeración Suit
?>