Download the PHP package slava-basko/enum without Composer
On this page you can find all versions of the php package slava-basko/enum. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download slava-basko/enum
More information about slava-basko/enum
Files in slava-basko/enum
Informations about the package enum
PHP enums
Please, use PHP built-in Enum if you are on PHP 8.1+.
This is a port of https://github.com/DASPRiD/Enum for PHP 5 because there still exist services/apps in production that using old PHP, unfortunately. But they also want a bit of Enum 🙂.
It is a well known fact that PHP is missing a basic enum type before version 8.1, ignoring the rather incomplete SplEnum
implementation
which is only available as a PECL extension. There are also quite a few other userland enum implementations around,
but all of them have one or another compromise. This library tries to close that gap as far as PHP allows it to (before version 8.1).
Usage
Basics
At its core, there is the DASPRiD\Enum\AbstractEnum
class, which by default will work with constants like any other
enum implementation you might know. The first clear difference is that you should define all the constants as protected
(so nobody outside your class can read them but the AbstractEnum
can still do so). The other even mightier difference
is that, for simple enums, the value of the constant doesn't matter at all. Let's have a look at a simple example:
If you need to provide constants for either internal use or public use, you can mark them as either private or public, in which case they will be ignored by the enum, which only considers protected constants as valid values. As you can see, we specifically defined the generated magic methods in a class level doc block, so anyone using this class will automatically have proper auto-completion in their IDE. Now since you have defined the enum, you can simply use it like that:
More complex example
Of course, all enums are singletons, which are not cloneable or serializable. Thus you can be sure that there is always just one instance of the same type. Of course, the values of constants are not completely useless, let's have a look at a more complex example:
How to run tests
Install dependencies
Run tests