zrnik / enum
针对12年前的一个 Stack Overflow 问题,我多次返回的问题,终于被打包并准备要求使用!
Requires
- php: >=7.4
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9
- tracy/tracy: ^v2
README
这个类是因为这个 Stack Overflow 问题而创建的: https://stackoverflow.com/questions/254514/php-and-enumerations
我多次搜索 Brian Cline的 答案。并且每次我复制它,我都会根据我的需求对其进行扩展。
但不再是这样了。
我已经重写并扩展了这个类,结果是这个包!
安装
composer require zrnik/enum
变更日志
- 1.0.0 - 重命名发布(从 zrny/enum 改为 zrnik/enum)
用法
创建 Enum 类
use Zrnik\Base\Enum; class DayOfWeek extends Enum { const Sunday = 0; const Monday = 1; const Tuesday = 2; const Wednesday = 3; const Thursday = 4; const Friday = 5; const Saturday = 6; }
比较
if($this->Stardate->DayOfWeek === DayOfWeek::Monday) { $this->spaceTime = new SpaceTime(); //TODO: Decide if light will be particle or wave $this->spaceTime->addComponent(new Light()); }
列举
foreach(DayOfWeek::getValues() as $value) { echo 'It\'s '.DayOfWeek::getName($value).' and im still lazy. '.PHP_EOL; }
foreach(DayOfWeek::getNames() as $name) { echo 'It\'s '.$name.' and im'.(DayOfWeek::getValue($name) === DayOfWeek::Monday ? ' ':' still ').'lazy. '.PHP_EOL; }
检查
if(DayOfWeek::getValue("Monday") === DayOfWeek::Monday) { // true } if(DayOfWeek::getValue("monday") === DayOfWeek::Monday) { // Invalid Argument Exception } if(DayOfWeek::getValue("monday", false) === DayOfWeek::Monday) { // true, case sensitivity disabled } if(DayOfWeek::getValue("monday ", false) === DayOfWeek::Monday) { // true, not case sensitive AND it gets trimmed automatically }
???
盈利!
方法
\Zrnik\Base\Enum::getName(mixed $Value) : array
根据值获取常量名称。
\Zrnik\Base\Enum::getValue(string $Name[, bool $caseSensitive = true]) : mixed
根据名称获取常量的值。大小写敏感性由第二个参数修改。
\Zrnik\Base\Enum::isValidName(string $Name[, bool $caseSensitive = true]) : bool
检查名称是否存在于 Enum 中。大小写敏感性由第二个参数修改。
\Zrnik\Base\Enum::isValidValue(string $Value) : bool
检查值是否存在于 Enum 中。
\Zrnik\Base\Enum::toArray([$caseSensitive = true]) : array
返回一个包含所有常量的关联数组。
\Zrnik\Base\Enum::getNames([$caseSensitive = true]) : array
返回一个包含在 enum 中定义的所有名称的列表。
\Zrnik\Base\Enum::getValues() : array
返回一个包含在 enum 中定义的所有值的数组。