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/