Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP Enum: Aufzählungen definieren und typsicher nutzen

Sie befinden sich: Home > Php Tutorial > PHP Enum: Aufzählungen...

PHP Enum: Aufzählungen definieren und typsicher nutzen


Eintrag am:  31.03.2026
Hits / Besucher:  12
Sprache:  Deutsch
Kategorie:  Fortgeschrittene...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Seit PHP 8.1 gibt es Enums (Aufzählungen) als eigenen Sprachbestandteil. Enums definieren eine feste Menge von Werten und machen Code typsicher und lesbarer. Sie ersetzen in vielen Fällen Konstanten, die bisher für Status-Werte, Rollen oder Kategorien verwendet wurden. In diesem Tutorial lernst du, wie du Pure und Backed Enums erstellst, Methoden darin definierst und Werte mit from() und tryFrom() konvertierst.

Illustration zum Tutorial: PHP Enum: Aufzählungen definieren und typsicher nutzen

Bevor wir Enums in der Praxis einsetzen, lohnt ein kurzer Blick auf die Grundlagen und den Unterschied zu herkömmlichen Konstanten.

Was ist ein Enum in PHP?

Ein Enum ist ein Datentyp, der eine feste Anzahl möglicher Werte (Cases) definiert. Anders als bei Konstanten kann PHP zur Laufzeit prüfen, ob ein Wert gültig ist. Enums können als Typ-Hint in Funktionsparametern und Rückgabewerten verwendet werden, was ungueltige Werte bereits vor der Ausführung ausschließt.

Pure Enums (einfache Aufzählungen)

Ein Pure Enum definiert Cases ohne zugeordnete Werte. Die Cases dienen rein als Typmarker.

<?php

enum Farbe
{
case Rot;
case Gruen;
case Blau;
}

function hintergrund(Farbe $farbe): string
{
return match($farbe) {
Farbe::Rot => '#ff0000',
Farbe::Gruen => '#00ff00',
Farbe::Blau => '#0000ff',
};
}

echo hintergrund(Farbe::Rot);
/* Ausgabe: #ff0000 */

Die Funktion hintergrund() akzeptiert ausschließlich Werte vom Typ Farbe. Ein Aufruf mit einem String oder Integer führt zu einem TypeError.

Backed Enums (wertgebundene Aufzählungen)

Backed Enums ordnen jedem Case einen String- oder Integer-Wert zu. Das ist besonders nützlich, wenn Werte in einer Datenbank gespeichert oder aus einer API empfangen werden.

String-Backed Enums

<?php

enum Status: string
{
case Entwurf = 'draft';
case Veroeffentlicht = 'published';
case Archiviert = 'archived';
}

/* Wert aus der Datenbank in Enum umwandeln */
$status = Status::from('published');
echo $status->name;
/* Ausgabe: Veroeffentlicht */

/* tryFrom gibt null zurueck statt Exception */
$unbekannt = Status::tryFrom('geloescht');
/* $unbekannt ist null */

Die Methode from() wirft eine ValueError-Exception, wenn der Wert nicht existiert. Die Methode tryFrom() gibt stattdessen null zurück und eignet sich für Fälle, in denen ungültige Werte erwartet werden können.

Integer-Backed Enums

Statt Strings lassen sich auch Integer-Werte verwenden. Alle Cases müssen denselben Typ haben.

Methoden in Enums

Enums können eigene Methoden enthalten. Das macht sie deutlich mächtiger als einfache Konstanten.

<?php

enum Prioritaet: int
{
case Niedrig = 1;
case Mittel = 2;
case Hoch = 3;

public function label(): string
{
return match($this) {
self::Niedrig => 'Niedrige Prioritaet',
self::Mittel => 'Mittlere Prioritaet',
self::Hoch => 'Hohe Prioritaet',
};
}
}

echo Prioritaet::Hoch->label();
/* Ausgabe: Hohe Prioritaet */

Enum mit Interface und Trait

Enums können Interfaces implementieren und Traits einbinden. Sie können jedoch nicht von anderen Klassen erben und keine eigenen Eigenschaften (Properties) besitzen.

Alle Cases eines Enums auflisten

Die statische Methode cases() gibt alle Cases als Array zurück. Das ist nützlich für Dropdown-Menüs oder Validierungen.

<?php

$alleCases = Status::cases();
foreach ($alleCases as $case) {
echo $case->name . ': ' . $case->value . PHP_EOL;
}
/* Ausgabe:
Entwurf: draft
Veroeffentlicht: published
Archiviert: archived */

Einschränkungen von Enums

Enums unterliegen einigen Einschränkungen, die sie von Klassen unterscheiden:

  • Enums können keine Properties haben, nur Konstanten und Methoden.
  • Enums können nicht mit new instanziiert werden.
  • Enums können nicht erweitert (extended) werden.
  • Backed Enums müssen für alle Cases einen Wert des gleichen Typs angeben (entweder string oder int).
flowchart TD
    A["Enum Status: string"] --> B["case Entwurf = 'draft'"]
    A --> C["case Veroeffentlicht = 'published'"]
    A --> D["case Archiviert = 'archived'"]
    E["Datenbank-Wert 'published'"] --> F["Status::from('published')"]
    F --> C

Fazit

PHP Enums sind eine typsichere Alternative zu Konstanten für feste Wertemengen. Pure Enums dienen als einfache Typmarker, Backed Enums speichern zusätzlich String- oder Integer-Werte. Mit eigenen Methoden, Interface-Implementierung und der Konvertierung über from() und tryFrom() bieten Enums alles, was für saubere und wartbare Code-Strukturen nötig ist. In Kombination mit dem match-Ausdruck entfalten sie ihr volles Potenzial.

 


Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.