Enumerations

(PHP 8 >= 8.1.0)

Enumerações Básicas

Enumerations são uma camada de restrição sobre classes e constantes de classe, destinadas a fornecer uma maneira de definir um conjunto fechado de valores possíveis para um tipo.

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

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

do_stuff(Suit::Spades);
?>

Para uma discussão completa, consulte o capítulo Enumerations.

Casting

Se um enum for convertido em um object, ele não será modificado. Se um enum for convertido em um array, será criado um array com uma única chave de name (para enumerations puras) ou um array com chaves name e value (para enumerations com backup). Todos os outros tipos de conversão resultarão em erro.

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