Les énumérations peuvent s'appuyer sur des traits, qui se comportent de la même manière que les classes. La précondition est que les traits utilisés dans une énumération ne doivent pas contenir de propriétés. Ils ne peuvent inclure que des méthodes et des méthodes statiques. Un trait contenant des propriétés entraînera une erreur fatale.
<?php
interface Colorful
{
public function color(): string;
}
trait Rectangle
{
public function shape(): string {
return "Rectangle";
}
}
enum Suit implements Colorful
{
use Rectangle;
case Hearts;
case Diamonds;
case Clubs;
case Spades;
public function color(): string
{
return match($this) {
Suit::Hearts, Suit::Diamonds => 'Red',
Suit::Clubs, Suit::Spades => 'Black',
};
}
}
?>