Trait

枚舉也能使用 trait,行為和 class 一樣。 留意在枚舉中 use trait 不允許包含屬性。 只能包含方法、靜態(tài)方法。 包含屬性的 trait 會(huì)導(dǎo)致 fatal 錯(cuò)誤。

<?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::HeartsSuit::Diamonds => 'Red',
            
Suit::ClubsSuit::Spades => 'Black',
        };
    }
}
?>