MENU
Enums
An enum (enumeration) declares a fixed set of possible values for a type, called cases. A pure enum case has no value of its own — it is simply a distinct, comparable singleton instance, referred to as EnumName::CaseName.<?php
enum Suit {
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
$suit = Suit::Hearts;
echo $suit->name, "\n";
var_dump($suit === Suit::Hearts);
?>Hearts
bool(true)
<?php
enum Suit: string {
case Hearts = 'H';
case Diamonds = 'D';
case Clubs = 'C';
case Spades = 'S';
}
echo Suit::Hearts->value, "\n";
echo Suit::from('D')->name, "\n";
var_dump(Suit::tryFrom('X'));
try {
Suit::from('X');
} catch (\ValueError $e) {
echo $e->getMessage(), "\n";
}
foreach (Suit::cases() as $case) {
echo $case->name, ' = ', $case->value, "\n";
}
?>H
Diamonds
NULL
"X" is not a valid backing value for enum Suit
Hearts = H
Diamonds = D
Clubs = C
Spades = S
<?php
interface HasColor {
function color(): string;
}
enum Suit: string implements HasColor {
case Hearts = 'H';
case Diamonds = 'D';
case Clubs = 'C';
case Spades = 'S';
public function color(): string {
return match ($this) {
Suit::Hearts, Suit::Diamonds => 'Red',
Suit::Clubs, Suit::Spades => 'Black',
};
}
}
foreach (Suit::cases() as $case) {
echo "{$case->name}: {$case->color()}\n";
}
?>Hearts: Red
Diamonds: Red
Clubs: Black
Spades: Black