When an enum case has no assigned (scalar) value in PHP, it is called a Pure Case, and an enum that contains only pure cases is called a "Pure Enum".
Consider, for example, the following pure enum (which only contains enum cases that have no assigned values):
// PHP 8.1+
enum MyEnum
{
case Foo;
case Bar;
case Baz;
}
The opposite of Pure enums are Backed Enums (which only have cases that have scalar values).
Pure cases are not implicitly backed by a default value (such as 0 for instance); each case is, in fact, a singleton object.
Pure enums have:
- Cases that have a read-only
nameproperty that returns the case-sensitive name of the respectivecase; - A static
cases()method that returns an array of all defined cases.
// PHP 8.1+ // ... $cases = MyEnum::cases(); var_dump($cases); // [enum(MyEnum::Foo), enum(MyEnum::Bar), enum(MyEnum::Baz)] echo $cases[0]->name; // 'Foo' echo MyEnum::Foo->name; // 'Foo'
This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.