(PHP 8 >= 8.1.0)
Enumerations are a restricting layer on top of classes and class constants, intended to provide a way to define a closed set of possible values for a type.
<?php
enumSuit
{
caseHearts;
caseDiamonds;
caseClubs;
caseSpades;
}
functiondo_stuff(Suit $s)
{
// ...
}
do_stuff(Suit::Spades);
?>
For a full discussion, see theEnumerations chapter.
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^
*/
enumMyExceptionCase{
caseInvalidMethod;
caseInvalidProperty;
caseTimeout;
}
classMyExceptionextendsException{
function__construct(privateMyExceptionCase $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 newMyException(MyExceptionCase::InvalidMethod);
} catch (MyException $myE) {
echo$myE->getMessage();// Bad Request - Invalid Method
}