Aufzählungen (Enum)

(PHP 8 >= 8.1.0)

Grundlagen der Aufzählungen

Aufzählungen dienen als einschränkende Schicht über Klassen und Klassenkonstanten und bieten eine Möglichkeit, eine geschlossene Menge von möglichen Werten für einen Typ zu definieren.

<?php
enum Suit
{
case
Hearts;
case
Diamonds;
case
Clubs;
case
Spades;
}

function
do_stuff(Suit $s)
{
// ...
}

do_stuff(Suit::Spades);
?>

Eine ausführliche Beschreibung ist im Kapitel Aufzählungen zu finden.

Casting (Umwandlung)

Wenn ein Wert vom Typ enum in ein Objekt umgewandelt wird, wird er nicht verändert. Wenn ein Enum in ein Array umgewandelt wird, wird ein Array mit einem einzelnen Schlüssel name erstellt (bei Pure Enums) oder ein Array mit den beiden Schlüsseln name und value (bei Backed Enums). Alle anderen Cast-Typen führen zu einem Fehler.

add a note

User Contributed Notes 1 note

up
50
esdras-schonevald
3 years ago
https://gist.github.com/esdras-schonevald/71a6730e6191c5e9c053e2f65b839eec<?phpdeclare(strict_types=1);/** * This is a sample * How to use Enum to create a custom exception cases * PHP 8.1^ */enum MyExceptionCase {    case InvalidMethod;    case InvalidProperty;    case Timeout;}class MyException extends Exception {    function __construct(private MyExceptionCase $case){        match($case){            MyExceptionCase::InvalidMethod      =>    parent::__construct("Bad Request - Invalid Method", 400),            MyExceptionCase::InvalidProperty    =>    parent::__construct("Bad Request - Invalid Property", 400),            MyExceptionCase::Timeout            =>    parent::__construct("Bad Request - Timeout", 400)        };    }}// Testing my custom exception classtry {    throw new MyException(MyExceptionCase::InvalidMethod);} catch (MyException $myE) {    echo $myE->getMessage();  // Bad Request - Invalid Method}
To Top