Obwohl Enums auf Klassen und Objekten aufgebaut sind, unterstßtzen sie nicht alle objektbezogenen Funktionen. Insbesondere dßrfen Enum-Fälle keinen Zustand haben.
Folgende Objektfunktionalität ist verfßgbar und verhält sich wie bei jedem anderen Objekt auch:
TARGET_CLASS enthält auch die Enums
selbst. Der Zielfilter TARGET_CLASS_CONST schlieĂt
die Enum-Fälle ein.
__CLASS__ und __FUNCTION__ verhalten sich wie Ăźblich.
Bei einem Enum-Typ entspricht die magische Konstante
::class dem Namen des Typs einschlieĂlich des
Namensraums, genau wie bei einem Objekt. Bei einer Case-Instanz wird die
magische Konstante ::class ebenfalls nach dem Enum-Typ
ausgewertet, da es sich um eine Instanz dieses Typs handelt.
AuĂerdem dĂźrfen Enum-Fälle nicht direkt mit new oder mit
ReflectionClass::newInstanceWithoutConstructor()
instanziiert werden. Beides fĂźhrt zu einem Fehler.
<?php
$clovers = new Suit();
// Error: Cannot instantiate enum Suit
$horseshoes = (new ReflectionClass(Suit::class))->newInstanceWithoutConstructor()
// Error: Cannot instantiate enum Suit