트레이트
트레이트 (Traits)
열거형에 트레이트(trait)를 사용하는 방법을 다룹니다. 열거형에서 트레이트를 쓸 때의 제약, 특히 속성(property)을 포함할 수 없다는 점을 살펴봅니다.
출처: Traits
본문
Enum은 트레이트를 사용할 수 있으며, 클래스에서와 동일하게 동작합니다. 단, enum에 사용되는 트레이트는 속성(property)을 포함하면 안 된다는 주의사항이 있습니다. 메서드, 정적 메서드, 상수만 포함할 수 있습니다. 속성이 있는 트레이트는 치명적 오류(fatal error)를 일으킵니다.
<?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',
};
}
}
$suit = Suit::Spades;
var_dump($suit->color());
var_dump($suit->shape());