### Install Spatie Enum via Composer Source: https://github.com/spatie/enum/blob/main/docs/installation-and-setup.md This snippet shows the Composer command to install the spatie/enum package. It is the primary method for adding the package to your PHP project. ```bash composer require spatie/enum ``` -------------------------------- ### Package Installation Source: https://github.com/spatie/enum/blob/main/README.md Provides the Composer command to install the spatie/enum package. ```bash composer require spatie/enum ``` -------------------------------- ### Getting Enum Values Source: https://github.com/spatie/enum/blob/main/README.md Explains how to retrieve the underlying value of an enum instance using the read-only `value` property. ```php $status->value; ``` -------------------------------- ### Retrieve Enum Value Source: https://github.com/spatie/enum/blob/main/docs/usage/2-internal-enum-values.md Shows how to access the underlying value of an enum object. This value can then be stored, for example, in a database. The `value` property is read-only. ```php $status->value; ``` -------------------------------- ### Using Enums in Methods Source: https://github.com/spatie/enum/blob/main/README.md Illustrates how to use the defined enum type hints in method signatures and how to pass enum instances to these methods. ```php public function setStatus(StatusEnum $status): void { $this->status = $status; } // ... $class->setStatus(StatusEnum::draft()); ``` -------------------------------- ### Creating Enums from Values Source: https://github.com/spatie/enum/blob/main/README.md Shows how to create an enum instance from its string value using `from()` and safely attempt to create one using `tryFrom()`, which returns null if the value does not exist. ```php $status = StatusEnum::from('draft'); $status = StatusEnum::tryFrom('draft'); ``` -------------------------------- ### Create Enum - PHP Source: https://github.com/spatie/enum/blob/main/docs/introduction.md Demonstrates how to create a strongly typed enum using the Spatie Enum package in PHP. Enums are defined as classes extending \Spatie\Enum\Enum, with methods for each enum case. ```php use \Spatie\Enum\Enum; /** * @method static self draft() * @method static self published() * @method static self archived() */ class StatusEnum extends Enum { } ``` -------------------------------- ### Define a Basic Enum Source: https://github.com/spatie/enum/blob/main/README.md Demonstrates how to define a simple enum class extending Spatie\Enum\Enum. It includes method definitions for each enum case, which will serve as their default values. ```php use \Spatie\Enum\Enum; /** * @method static self draft() * @method static self published() * @method static self archived() */ class StatusEnum extends Enum { } ``` -------------------------------- ### Use Enum in Method - PHP Source: https://github.com/spatie/enum/blob/main/docs/introduction.md Illustrates how to use a strongly typed enum as a method parameter in PHP. This ensures that only valid enum instances can be passed to the method, improving type safety. ```php public function setStatus(StatusEnum $status): void { $this->status = $status; } // ... $class->setStatus(StatusEnum::draft()); ``` -------------------------------- ### Customizing Enum Values with a Closure Source: https://github.com/spatie/enum/blob/main/README.md Illustrates using a `Closure` within the `values()` method to dynamically generate enum values based on their names, such as converting them to lowercase. ```php use Closure; /** * @method static self DRAFT() * @method static self PUBLISHED() * @method static self ARCHIVED() */ class StatusEnum extends Enum { protected static function values(): Closure { return function(string $name): string|int { return mb_strtolower($name); }; } } ``` -------------------------------- ### Create Enum from Serialized Value Source: https://github.com/spatie/enum/blob/main/docs/usage/2-internal-enum-values.md Demonstrates how to instantiate an enum object from a serialized string value. This is useful for converting stored data, such as database entries, back into enum objects. ```php $status = new StatusEnum('draft'); ``` -------------------------------- ### Customizing Enum Values with an Array Source: https://github.com/spatie/enum/blob/main/README.md Demonstrates how to override the default enum values by defining a `values()` method that returns an associative array mapping enum names to custom values (e.g., integers). ```php /** * @method static self draft() * @method static self published() * @method static self archived() */ class StatusEnum extends Enum { protected static function values(): array { return [ 'draft' => 1, 'published' => 2, 'archived' => 3, ]; } } ``` -------------------------------- ### Defining Custom Enum Labels Source: https://github.com/spatie/enum/blob/main/README.md Demonstrates how to override the `labels` method in an Enum class to provide custom string labels for enum values. If a label is not explicitly defined, the enum's value is used as the default label. Labels are read-only properties. ```php /** * @method static self draft() * @method static self published() * @method static self archived() */ class StatusEnum extends EnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnum ``` -------------------------------- ### Laravel Enum Base Class Source: https://github.com/spatie/enum/blob/main/docs/usage/100-laravel.md The spatie/laravel-enum package requires extending the `Spatie\Enum\Laravel\Enum` base class for features like model casting. ```PHP use Spatie\Enum\Laravel\Enum; class MyEnum extends Enum { // Enum definition } ``` -------------------------------- ### Compare Enum with Multiple Values Source: https://github.com/spatie/enum/blob/main/docs/usage/5-comparing-enums.md Compares the current enum instance against multiple provided enum instances. The method returns `true` if the current enum matches any of the enums passed as arguments. Note that only enum objects are allowed as arguments. ```php $status->equals(StatusEnum::draft(), StatusEnum::archived()); ``` -------------------------------- ### Compare Enum with a Single Value Source: https://github.com/spatie/enum/blob/main/docs/usage/5-comparing-enums.md Compares the current enum instance with a single provided enum instance using the `equals` method. This is useful for checking if an enum matches a specific expected value. ```php $status->equals(StatusEnum::draft()); ``` -------------------------------- ### Define Custom Enum Labels Source: https://github.com/spatie/enum/blob/main/docs/usage/4-overriding-enum-labels.md This snippet shows how to define custom, user-friendly labels for enum values by overriding the `labels` method in a PHP Enum class. The `labels` method returns an array mapping enum values to their corresponding string labels. If a label is not explicitly defined, the enum's value is used as the default label. The `label` property is read-only. ```php /** * @method static self draft() * @method static self published() * @method static self archived() */ class StatusEnum extends EnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnumEnum ```