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
53
esdras-schonevald ¶
4 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
}