PHP.nl

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
?>

Documentatie