Enums können Traits verwenden, die sich dann genauso verhalten wie in
Klassen. Hierbei ist zu beachten, dass die in einer Enum verwendeten Traits
keine Eigenschaften enthalten dürfen, sondern nur Methoden, statische
Methoden und Konstanten. Ein Trait mit Eigenschaften führt zu einem fatalen
Fehler.
<?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',
};
}
}
?>