Traits

열거형은 클래스에서와 동일하게 동작하는 traits을 활용할 수 있습니다. 주의할 점은 열거형에 사용된 traits는 속성을 포함하지 않아야 한다는 것입니다. 여기에는 메서드와 정적 메서드만 포함될 수 있습니다. 속성이 있는 traits는 치명적인 오류를 발생시킵니다.

                  
<?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',
        };
    }
}
?>