PHP 8.1.6 Released!

Перечисления

Основы перечислений

Перечисления - это ограничивающий слой над классами и константами классов, предназначенный для предоставления способа определения закрытого набора возможных значений для типа.

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

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

do_stuff(Suit::Spades);
?>

Полное описание смотрите в главе о перечислениях.

Casting

Если перечисление (enum) преобразуется в объект (object), оно не изменяется. Если перечисление (enum) преобразуется в массив (array), массив с одним ключом name (для простых перечислений) или массив с обоими ключами name и value (для типизированных перечислений). Все остальные приведения типов приведут к ошибке.

add a note add a note

User Contributed Notes 1 note

up
0
esdras-schonevald
1 day 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