PHP.nl

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());
}
?>

Documentatie