Трейты

Перечисления могут использовать трейты, которые будут вести себя так же, как и классы. Предостережение заключается в том, что трейты, используемые (use) в перечислении не должны содержать свойств. Они могут включать только методы и статические методы. Трейт со свойствами приведёт к фатальной ошибке.

<?php
interface Colorful
{
    public function 
color(): string;
}

trait 
Rectangle
{
    public function 
shape(): string {
        return 
"Прямоугольние";
    }
}

enum Suit implements Colorful
{
    use 
Rectangle;

    case 
Hearts;
    case 
Diamonds;
    case 
Clubs;
    case 
Spades;

    public function 
color(): string
    
{
        return 
match($this) {
            
Suit::HeartsSuit::Diamonds => 'Красный',
            
Suit::ClubsSuit::Spades => 'Чёрный',
        };
    }
}
?>
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top