Traits

Las enumeraciones pueden aprovechar los traits, que se comportarán igual que en las clases. La salvedad es que los traits useados en una enumeración no deben contener propiedades. Solo pueden incluir métodos, métodos estáticos y constantes. Un trait 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',
};
}
}
?>