Les énumérations

(PHP 8 >= 8.1.0)

Les énumérations de base

Les énumérations constituent une couche restrictive au-dessus des classes et des constantes de classe, Elles permettent de définir un ensemble fermé de valeurs possibles pour un type.

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

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

do_stuff(Suit::Spades);
?>

Pour une description complète, voir le chapitre sur les énumérations.

Casting

Si une enum est convertie en object, elle n'est pas modifiée. Si une enum est convertie en array, un tableau avec une seule clé name (pour les Pure enums) ou un tableau avec les clés name et value (pour les Backed enums) est créé. Tous les autres types de conversion entraîneront une erreur.

add a note add a note

User Contributed Notes 1 note

up
19
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