zul3s/enum-php

此包已废弃且不再维护。未建议替代包。

高级PHP枚举类型

1.2.1 2021-08-08 07:28 UTC

This package is auto-updated.

Last update: 2023-04-17 06:16:55 UTC


README

Build Status Latest Stable Version Total Downloads License composer.lock

仅支持PHP >=7.1。
它是一个抽象类,需要扩展才能使用。

什么是枚举?

维基百科

在计算机编程中,枚举类型(也称为枚举或enum)是一种数据类型,它由一组称为元素的命名值组成,这些值是类型的元素、成员或枚举器。枚举器名称通常作为语言中的常量标识符。已声明为具有枚举类型的变量可以分配任何枚举器作为值。换句话说,枚举类型具有不同的值,可以进行比较和分配,但在计算机内存中没有任何特定的具体表示;编译器和解释器可以任意表示它们。

一些优点

当您使用枚举而不是类常量时,您可以利用以下优势

  • 类型提示:例如,function setEnum(Enum $enum)
  • 丰富枚举类的方法:例如,first、format、...
  • 获取所有可能的键/值

为什么是这个?

实际上,您可以找到其他提供PHP枚举实现的包,但这个包有一些优势

  • 单例:此包使用单例模式
  • 快速:实现了小型执行缓存
  • 正确的方法:没有循环引用
  • 小巧:此包不需要其他包即可使用
  • 质量:PSR-2标准

安装

composer require zul3s/enum-php

声明

use Zul3s\EnumPhp\Enum;

/**
 * Simpson enum
 *
 * @method static Simpson::HOMER()
 * @method static Simpson::MARGE()
 */
class Simpson extends Enum
{
    /**
    * @description('Description for Homer const')
    */
    const HOMER  = 1;
    const MARGE  = 'marjorie_jacqueline';
}

使用

$marge = Simpson::MARGE();

$homer = Simpson::byKey('HOMER');

$marge = Simpson::byValue('marjorie_jacqueline');

$homer = Simpson::byValue('1', false); // Disable strict type mode

类型提示

function setMember(Simpson $member) 
{
    // ...
}

文档

获取
  • $myEnum = MyEnumClass::ENUM_CONST() 通过常量名称(方法名称)返回枚举搜索
  • $myEnum = MyEnumClass::byValue(mixed $value, [optional] bool $strict) 通过值返回枚举
  • $myEnum = MyEnumClass::byKey(string $constName) 通过常量名称返回枚举
使用
  • $myEnum->getValue() : mixed 返回枚举值
  • $myEnum->getKey() : string 返回常量名称字符串
  • $myEnum->getDescription() : string 如果设置了描述注释则返回,否则抛出异常
  • $myEnum->isEqual(Enum $myEnum) : bool 检查枚举是否等于另一个枚举
  • echo $myEnum : string __toString()已实现以返回字符串值
辅助工具
  • MyEnumClass::getAll() : array 返回包含所有MyEnum可能性的数组
  • MyEnumClass::getValues() : array 返回一个简单的关联数组,键是常量名,值是常量值
  • MyEnumClass::isValidKey(string $testedValue) : bool 检查测试值是否为有效的常量名
  • MyEnumClass::isValidValue($testValue, [可选] bool $strict) : bool 检查测试值是否为有效的常量值