corp-soft / php-enum
PHP Enum implementation
1.0.0
2017-11-27 23:08 UTC
Requires
- php: >=7.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.0
- phpunit/phpunit: ~6.0
This package is not auto-updated.
Last update: 2024-11-18 08:46:11 UTC
README
PHP Enum implementation
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist corp-soft/php-enum "*"
or add
"corp-soft/php-enum": "*"
to the require section of your composer.json
file.
Available Methods:
createByName()
- Creates a new type instance using the name of a value.getValueByName()
- Returns the constant key by value(label)createByValue()
- Creates a new type instance using the value.listData()
- Returns the associative array with constants values and labelsgetLabel()
- Returns the constant label by keygetConstantsByName()
- Returns the list of constants (by name) for this type.getConstantsByValue()
- Returns the list of constants (by value) for this type.isValidName()
- Checks if a name is valid for this type.isValidValue()
- Checks if a value is valid for this type.
Declaration
<?php namespace App\Enums; use CorpSoft\Enum\BaseEnum; class PostStatus extends BaseEnum { const PENDING = 0; const APPROVED = 1; const REJECTED = 2; const POSTPONED = 3; /** * @var array */ public static $list = [ self::PENDING => 'Pending', self::APPROVED => 'Approved', self::REJECTED => 'Rejected', self::POSTPONED => 'Postponed', ]; }
Enum creation
$status = new PostStatus(PostStatus::PENDING); // or you can use the magic methods $status = PostStatus::PENDING();
Static methods
PostStatus::getConstantsByValue() // ['PENDING', 'APPROVED', 'REJECTED', 'POSTPONED'] PostStatus::getConstantsByName() // ['PENDING' => 0, 'APPROVED' => 1, 'REJECTED' => 2, 'POSTPONED' => 3] PostStatus::isValidName(1) // false PostStatus::isValidName('APPROVED') // true PostStatus::isValidValue(1) // true PostStatus::isValidValue('Approved') // false PostStatus::listData() // ['Pending', 'Approved', 'Rejected', 'Postponed'] PostStatus::getLabel(1) // Approved PostStatus::getValueByName('Approved') // 1
Type-Hint and Validation Rules
<?php use App\Enums\PostStatus; class Post { /** * @var integer status */ public $status; public function setStatus(PostStatus $status) { $this->status = $status->getValue(); } public function getStatus(): PostStatus { return $this->status; } }