Traits
Enumerações podem utilizar traits, que se comportam da mesma maneira que nas classes.
A limitação é que usados com use
em uma enum não podem conter propriedades.
Eles podem incluir apenas métodos e métodos estáticos. Um trait com propriedades
resultará em um erro fatal.
<?php
interface Colorido
{
public function cor(): string;
}
trait Retangulo
{
public function shape(): string {
return "Retângulo";
}
}
enum Naipe implements Colorido
{
use Retangulo;
case Copas;
case Ouros;
case Paus;
case Espadas;
public function cor(): string
{
return match($this) {
Naipe::Copas, Naipe::Ouros => 'Vermelho',
Naipe::Paus, Naipe::Espadas => 'Preto',
};
}
}
?>