wirus15 / enum
A simple PHP library for creating enum objects.
Installs: 7 421
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 1
Open Issues: 0
Requires
- php: >=7
Requires (Dev)
- mockery/mockery: ^0.9.5
- phpunit/phpunit: ~4.8
This package is not auto-updated.
Last update: 2025-07-01 20:55:49 UTC
README
A simple PHP library for creating Enum objects.
Examples
Defining a new Enum class
use Enum\Enum; // defining our Enum class final class Example extends Enum { const FOO = 1; const BAR = 2; const YOLO = 3; }
Basic usage
$foo = Example::get(Example::FOO); $bar = Example::get('bar'); $yolo = Example::YOLO(); function test(Example $enum) { if ($enum->is(Example::FOO)) { echo 'foo'; } else if ($enum->is(Example::BAR)) { echo 'bar'; } else { echo $enum; } } test($foo); // foo test($bar); // bar test($yolo); // Yolo
Getting Enum instances, listing keys and values
Example::get(Example::FOO); // instance of Example Example::FOO(); // shortcut Example::all(); // array of Example instances // keys and values Example::keys(); // array of keys ['FOO', 'BAR', 'YOLO'] Example::values(); // array of values [1, 2, 3] // checking if value exists Example::has(3); // true Example::has(4); // false
Getting single Enum properties
$foo = Example::FOO(); $foo->key(); // 'FOO' $foo->value(); // 1
Comparing Enums
$foo = Example::FOO(); $foo->is(1); // true $foo->is(Example::FOO); // true $foo->is($foo); // true // comparing with strict option (type comparison) $foo->is($foo, true); // true $foo->is(1, true); // false // searching in array $foo->in([1,2,3]); // true $foo->in([2,3]); // false
You can also make static calls and specify Enum class
Enum::get(Example::FOO, Example::class); Enum::all(Example::class); Enum::keys(Example::class); Enum::values(Example::class); Enum::has(1, Example::class);
Development and tests
To develop this lib we are using docker and docker-compose. After installation of those you should run:
bash
docker-compose run enum bash
Then on docker console run:
composer install
composer test
License
This library is released under MIT license.