Traits

Оновлено: 09.05.2023

Перерахування можуть використовувати ознаки, які поводитимуться так само, як і у класах. Застереженням є те, що риси, які використовуються у зчисленні, не повинні містити властивостей. Вони можуть містити лише методи та статичні методи. Риса з властивостями призведе до фатальної помилки.

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