Differences from objects
Verschillen van objecten
Hoewel Enums zijn gebouwd op klassen en objecten, ondersteunen ze niet alle objectgerelateerde functionaliteit. In het bijzonder is het verboden dat Enum-gevallen een status hebben.
Magische methoden De volgende objectfunctionaliteit is beschikbaar en gedraagt zich precies zoals bij elk ander object:
attributen TARGET_CLASS TARGET_CLASS_CONST __call callStatic __invoke __CLASS__ __FUNCTION__
De magische constante op een Enum-type evalueert naar de type naam inclusief eventuele namespace, precies hetzelfde als bij een object. De magische constante op een Case-instantie evalueert ook naar het Enum-type, aangezien het een instantie van dat type is.
::class ::class
Daarnaast mogen enum-gevallen niet rechtstreeks worden geïnstantieerd met new, noch met ReflectionClass::newInstanceWithoutConstructor in reflectie. Beide zullen resulteren in een fout.
<?php
$clovers = new Suit();
// Fout: Kan enum Suit niet instantiëren
$horseshoes = (new ReflectionClass(Suit::class))->newInstanceWithoutConstructor()
// Fout: Kan enum Suit niet instantiëren
?>