Exempel

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

Exempel

Exempel #1 Grundläggande begränsade värden

enum SortOrder
{
    case Asc;
    case Desc;
}

function query($fields, $filter, SortOrder $order = SortOrder::Asc)
{
     /* ... */
}

Funktionen query() kan nu fortsätta med tryggheten att $order garanterat är antingen SortOrder::Asc eller SortOrder::Desc. Alla andra värden skulle ha resulterat i ett TypeError, så ingen ytterligare felkontroll eller testning behövs.

Exempel #2 Avancerade exklusiva värden

enum UserStatus: string
{
    case Pending = 'P';
    case Active = 'A';
    case Suspended = 'S';
    case CanceledByUser = 'C';

    public function label(): string
    {
        return match($this) {
            static::Pending => 'Väntande',
            static::Active => 'Aktiv',
            static::Suspended => 'Avstängd',
            static::CanceledByUser => 'Avslutad av användaren',
        };
    }
}

I detta exempel kan en användares status vara en av, och exklusivt, UserStatus::Pending, UserStatus::Active, UserStatus::Suspended eller UserStatus::CanceledByUser. En funktion kan typdefiniera en parameter mot UserStatus och endast acceptera dessa fyra värden, punkt.

Alla fyra värden har en label()-metod, som returnerar en mänskligt läsbar sträng. Denna sträng är oberoende av den "maskinnamns"-skalära motsvarande strängen, som kan användas till exempel i en databasfält eller en HTML-väljbox.

foreach (UserStatus::cases() as $case) {
    printf('<option value="%s">%s</option>\n', $case->value, $case->label());
}


Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.enumerations.examples.php
PHP
Språkreferens
Språkreferens#Uppräkningar


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/