zrnik/enum

针对12年前的一个 Stack Overflow 问题,我多次返回的问题,终于被打包并准备要求使用!

v1.0.3 2023-05-03 07:46 UTC

This package is auto-updated.

Last update: 2024-09-03 10:50:51 UTC


README

GitHub Packagist Downloads Travis (.com) Packagist Version

这个类是因为这个 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 中定义的所有值的数组。