Basic limited values
Voorbeeld: Basis beperkte waarden
<?php
enum SortOrder
{
case Asc;
case Desc;
}
function query($fields, $filter, SortOrder $order = SortOrder::Asc)
{
/* ... */
}
?>
De functie kan nu veilig verdergaan in de wetenschap dat
gegarandeerd is dat het ofwel
of . Elke andere waarde zou hebben geleid tot een
, dus verdere foutcontrole of testen is niet nodig.
`query()``$order``SortOrder::Asc``SortOrder::Desc``TypeError`
Voorbeeld: Geavanceerde exclusieve waarden
<?php
enum UserStatus: string
{
case Pending = 'P';
case Active = 'A';
case Suspended = 'S';
case CanceledByUser = 'C';
public function label(): string
{
return match($this) {
self::Pending => 'Pending',
self::Active => 'Active',
self::Suspended => 'Suspended',
self::CanceledByUser => 'Canceled by user',
};
}
}
?>
In dit voorbeeld kan de status van een gebruiker een van, en exclusief, ,
, , of
zijn. Een functie kan een parameter typen tegen
en vervolgens alleen die vier waarden accepteren, punt.
`UserStatus::Pending``UserStatus::Active``UserStatus::Suspended``UserStatus::CanceledByUser``UserStatus`
Alle vier waarden hebben een methode, die een leesbare string retourneert.
Die string is onafhankelijk van de "machine naam" scalair equivalente string, die kan worden gebruikt in,
bijvoorbeeld, een databaseveld of een HTML selectbox.
`label()`
<?php
foreach (UserStatus::cases() as $case) {
printf('<option value="%s">%s</option>\n', $case->value, $case->label());
}
?>