Exempel
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/