Las enumeraciónes pueden aprovechar los rasgos, que se comportarán igual que en las clases.
La advertencia es que los rasgos use
(usados) en una enumeración no deben contener propiedades.
Solo pueden incluir métodos, métodos estáticos y constantes. Un rasgo con propiedades resultará en
un error fatal.
<?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',
};
}
}
?>