Enumerationen (Enums)
Definieren Sie typsichere Wertemengen mit Backed Enums und Pure Enums aus PHP 8.1.
Enumerationen (Enums) ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was sind Enums?
PHP 8.1 führte enums ein – einen speziellen Typ, der eine Variable auf eine vordefinierte Menge benannter Werte beschränkt und den Code ausdrucksstärker sowie typsicherer macht.
Reines Enum (Unit-Enum)
Ein reines Enum verfügt über benannte Cases ohne zugehörigen Wert. Es eignet sich hervorragend für Zustände, Richtungen oder Statuswerte.
<?php
enum Status {
case Active;
case Inactive;
case Banned;
}
$s = Status::Active;
echo $s->name; // "Active"Backed Enum
Ein Backed Enum weist jedem Case einen skalaren Wert (int oder string) zu – nützlich für die Speicherung in Datenbanken oder für API-Antworten.
<?php
enum Color: string {
case Red = "red";
case Green = "green";
case Blue = "blue";
}
echo Color::Red->value; // "red"From und TryFrom
Konvertieren Sie einen Rohwert mit from() (löst bei einem ungültigen Wert eine Exception aus) oder tryFrom() (gibt bei einem ungültigen Wert null zurück) wieder in einen Enum-Case.
<?php
$color = Color::from("red"); // Color::Red
$maybe = Color::tryFrom("purple"); // nullEnums in Typhinweisen
Verwenden Sie Enums als Typhinweise für Parameter und Rückgabetypen – PHP stellt sicher, dass nur gültige Cases übergeben werden können.
<?php
function paint(Color $color): void {
echo "Painting with ".$color->value;
}
paint(Color::Blue); // "Painting with blue"Enum-Cases in match
Enums eignen sich hervorragend in Verbindung mit match-Ausdrücken für eine vollständige Behandlung aller Fälle.
<?php
$label = match($status) {
Status::Active => "Active user",
Status::Inactive => "Inactive account",
Status::Banned => "Banned",
};
// PHP can warn if cases are unhandledEnum implementiert Interface
Enums können Interfaces implementieren und dadurch polymorphes Verhalten ermöglichen.
<?php
interface HasLabel {
public function label(): string;
}
enum Status: string implements HasLabel {
case Active = "active";
case Inactive = "inactive";
public function label(): string {
return ucfirst($this->value);
}
}Enum-Methoden
Enums können Methoden enthalten, aber keinen Konstruktor und keine veränderlichen Eigenschaften.
<?php
enum Suit: string {
case Hearts = "H";
case Diamonds = "D";
case Clubs = "C";
case Spades = "S";
public function color(): string {
return match($this) {
Suit::Hearts, Suit::Diamonds => "red",
Suit::Clubs, Suit::Spades => "black",
};
}
}Enum-Konstanten
Enums können Konstanten (keine Cases) für zugehörige skalare Werte enthalten.
<?php
enum Direction {
case North;
case South;
const DEFAULT = self::North;
}Cases auflisten
EnumName::cases() gibt ein Array mit allen Enum-Case-Objekten zurück – nützlich zum Erzeugen von Optionen für Dropdown-Listen.
<?php
$options = Color::cases();
foreach ($options as $c) {
echo $c->name.": ".$c->value."\n";
}Enums im Vergleich zu Klassenkonstanten
Enums erzwingen Typsicherheit – Sie können nicht versehentlich die Ganzzahl 1 übergeben, wenn ein Status-Enum erwartet wird. Klassenkonstanten bieten diese Garantie nicht.
Zusammenfassung
Enums drücken feste Wertemengen typsicher aus. Verwenden Sie reine Enums für Zustände und Backed Enums, wenn Sie Datenbank- oder API-Werte benötigen. Verwenden Sie tryFrom() für sicheres Parsen.
Kurze Überprüfung
Was gibt Color::tryFrom("invalid") zurück, wenn kein Case übereinstimmt?
Häufig gestellte Fragen
Ist die Lektion „Enumerationen (Enums)“ kostenlos?
Ja — der vollständige Text von „Enumerationen (Enums)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Enumerationen (Enums)“?
Definieren Sie typsichere Wertemengen mit Backed Enums und Pure Enums aus PHP 8.1. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Enumerationen (Enums)“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Match-Ausdruck und benannte Argumente
- Nullsafe-Operator und Union-Typen
- Enumerationen (Enums)
- Fibers: Kooperative Nebenläufigkeit