PHP code example of tsitsulin / enum

1. Go to this page and download the library: Download tsitsulin/enum library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

tsitsulin / enum example snippets




declare(strict_types=1);

namespace Tsitsulin\Enum\Examples;

use Tsitsulin\Enum\PrivateEnum;
use Tsitsulin\Enum\StringEnum;

/**
 * @method static self Get()
 * @method static self Post()
 * @method static self Put()
 * @method static self Patch()
 * @method static self Delete()
 * 
 * phpcs:disable Generic.NamingConventions.UpperCaseConstantName
 */
final class HttpMethodEnum extends StringEnum
{
    use PrivateEnum;

    protected const Get = 'get';
    protected const Post = 'post';
    protected const Put = 'put';
    protected const Patch = 'patch';
    protected const Delete = 'delete';
}



declare(strict_types=1);

namespace Tsitsulin\Enum\Examples;

use Tsitsulin\Enum\PrivateEnum;
use Tsitsulin\Enum\IntEnum;

/**
 * @method static self Ok()
 * @method static self MovedPermanently()
 * 
 * phpcs:disable Generic.NamingConventions.UpperCaseConstantName
 */
final class HttpResponseEnum extends IntEnum
{
    use PrivateEnum;

    protected const Ok = 200;
    protected const MovedPermanently = 301;
}

$caseName = HttpResponseEnum::Ok()->name; // 'Ok'
$caseValue = HttpResponseEnum::Ok()->value; // 200

new HttpResponseEnum(); // Fatal error
HttpResponseEnum::Ok()->value = 100; // EnumCaseCannotBeModifiedError

foreach (HttpResponseEnum::cases() as $httpResponse) {
    print_r([$httpResponse->name => $httpResponse->value]);
};
// ['Ok' => 200]
// ['MovedPermanently' => 301]

$caseName = HttpResponseEnum::from(200)->name); // name of case 'Ok'
$caseName = HttpResponseEnum::from('invalidValue')->name); // \Tsitsulin\Enum\Errors\UnexpectedEnumCaseTypeError
$caseName = HttpResponseEnum::tryFrom('invalidValue')->name); // Null

if (enum_exists(HttpResponseEnum::Ok())) { // True
    ...
}

    $original = HttpResponseEnum::Ok; // PHP 8.1
    $current = HttpResponseEnum::Ok();
    

    $original = function (enum|HttpResponseEnum $enum) {}
    $current = function(\Tsitsulin\Enum|HttpResponseEnum $enum) {}
    

    if ($enum1 === $deserializedEnum1) // False
    if ($enum1 == $deserializedEnum1) // True
    if ($enum1.name === $deserializedEnum1.name) // True
    if ($enum1.value === $deserializedEnum1.value) // True
    

    $deserializedEnum1 = deserialize_enum($serializedEnum1);

    if ($enum1 === $deserializedEnum1) // True
    ...