githubjeka / enum
简单且基础的功能,用于开始在项目中使用 Enum。
v2.0.0
2020-03-12 18:23 UTC
Requires
- php: >=7.1
This package is auto-updated.
Last update: 2024-09-13 04:19:15 UTC
README
使用 ENUM
简单且基础的功能,用于开始在项目中使用 Enum。只需通过创建 Enum 类来初始化 Enum 值。
final class SizeEnum extends \githubjeka\enum\BaseObjectEnum { const XS = 'xs'; const SMALL = 's'; const MEDIUM = 'm'; const LARGE = 'l'; const XL = 'xl'; const XXL = 'xxl'; public static function getList(): array { return [ self::XS => 'Extra small(xs)', self::SMALL => 'Small', self::MEDIUM => 'Medium', self::LARGE => 'Large', self::XL => 'Extra large(xl)', self::XXL => 'Extra extra large(xxl)', ]; } }
之后,您可以使用 API 枚举,例如
SizeEnum::getList()
返回用于在 HTML 列表元素(如复选框、选择框等)中使用的准备好的列表
SizeEnum::getKeys()
返回 ENUM 的值,用于在验证规则中使用,如 Assertion::inArray('xs', SizeEnum::getKeys());;
SizeEnum::XXL
返回字符串键。用于与保存的值进行比较 (bool)('xxl' === SizeEnum::XXL)?>;
SizeEnum::getLabel(SizeEnum::LARGE)
返回值的文本描述。如果值错误,将返回 InvalidArgumentException。
SizeEnum::isValid('xl')
用于避免 InvalidArgumentException 异常。
new SizeEnum('xxl')
返回枚举对象。
class Shirt { private $size; public function __construct(SizeEnum $size) { $this->size = $size; } public function size(): SizeEnum { return $this->size; } } $sizeFromDb = 'xxl'; $size = new SizeEnum($sizeFromDb); $shirt = new Shirt($size); $shirt->size()->asKey(); // (string) xxl $shirt->size()->asLabel(); // (string) Extra extra large(xxl) $shirt->size()->equals(new SizeEnum(SizeEnum::XS)); // (bool) false echo $shirt->size(); // (string) xxl
额外
强烈建议您不要使用数字作为枚举值
const XS = '0'; // not recommend const SMALL = '1'; // not recommend const MEDIUM = 2; // not recommend const LARGE = 3; // not recommend
因为如果您错误地引用 ENUM 值,很容易混淆字符串和基础数字值。
默认情况下,期望所有 Enum(常量)都是字符串。
如果您想使用整数,可以在您的 Enum 类中将 $stringMode 属性更改为 FALSE。之后,应仅对常量使用整数值
const XS = 0; const SMALL = 1; const MEDIUM = 2; const LARGE = 3;
如果您使用 MySQL ENUM,请参阅限制 also