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
46
esdras-schonevald
2 years ago
https://gist.github.com/esdras-schonevald/71a6730e6191c5e9c053e2f65b839eec

<?php

declare(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 class
try {
throw new
MyException(MyExceptionCase::InvalidMethod);
} catch (
MyException $myE) {
echo
$myE->getMessage(); // Bad Request - Invalid Method
}
To Top