PHP code example of marc-mabe / enum-cl

1. Go to this page and download the library: Download marc-mabe/enum-cl 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/ */

    

marc-mabe / enum-cl example snippets


 declare(strict_types=1);

if (PHP_VERSION_ID < 80100) {
    

 declare(strict_types=1);

namespace Vendor;

use Mabe\Enum\Cl\EmulatedIntEnum;

final class MyEnum extends EmulatedIntEnum
{
    protected const ZERO = 0;
    protected const ONE = 1;
    protected const TWO = 2;
    protected const THREE = 3;
    protected const FOUR = 4;
    protected const FIVE = 5;
    protected const SIX = 6;
    protected const SEVEN = 7;
    protected const EIGHT = 8;
    protected const NINE = 9;
}

 declare(strict_types=1);

namespace Vendor;

use Mabe\Enum\Cl\EnumBc;

enum MyEnum:int
{
    use EnumBc;

    case ZERO = 0;
    case ONE = 1;
    case TWO = 2;
    case THREE = 3;
    case FOUR = 4;
    case FIVE = 5;
    case SIX = 6;
    case SEVEN = 7;
    case EIGHT = 8;
    case NINE = 9;
}

/**
 * @method static self CASENAME()
 */

 declare(strict_types=1);

namespace Vendor;

use function Mabe\Enum\Cl\enum_exists;

$zero = MyEnum::ZERO();
$zero = MyEnum::from(0);
$zero = MyEnum::tryFrom(0);
$cases = MyEnum::cases();

$zero->value; // 0
$zero->name;  // ZERO

$zero instanceof \UnitEnum;   // true
$zero instanceof \BackedEnum; // true

MyEnum::ZERO() === MyEnum::from(0);     // true
MyEnum::from(0) === MyEnum::tryFrom(0); // true

enum_exists(MyEnum::class); // true
enum_exists('stdClass');    // false

 declare(strict_types=1);

namespace Vendor;

MyEnum::ZERO; // PHP<8.1:  Error: Cannot access protected const MyEnum::ZERO
              // PHP>=8.1: enum(MyEnum::ZERO)

serialize(MyEnum::ZERO()); // PHP<8.1:  Error: Trying to serialize a non serializable emulated enum case of MyEnum
                           // PHP>=8.1: "E:11:"MyEnum:ZERO"