PHP 中缺少 enum,灵感来自 SplEnum
[![GitHub Actions][GA 图片]][GA 链接] [![Psalm Shepherd][Shepherd 图片]][Shepherd 链接]
此项目的维护通过 Tidelift 获得支持。
首先,也是最主要的是,SplEnum 并未集成到 PHP 中,你需要单独安装该扩展。
使用枚举代替类常量具有以下优势:
function setAction(Action $action) {function getAction() : Action {format、parse 等)final 可防止此操作)此枚举类并非旨在替代类常量,而仅在有意义时使用。
composer require myclabs/php-enumuse MyCLabs\Enum\Enum;
/**
* Action enum
*
* @extends Enum<Action::*>
*/
final class Action extends Enum
{
private const VIEW = 'view';
private const EDIT = 'edit';
}$action = Action::VIEW();
// or with a dynamic key:
$action = Action::$key();
// or with a dynamic value:
$action = Action::from($value);
// or
$action = new Action($value);如你所见,静态方法会自动实现,以提供对枚举值的快速访问。
使用类常量相比,一个优势是能够将枚举用作参数类型:
function setAction(Action $action) {
// ...
}__construct() 构造函数会检查该值是否存在于枚举中__toString() 你可以 echo $myValue,它会显示枚举值(常量的值)getValue() 返回枚举的当前值getKey() 返回当前值在枚举中的键equals() 测试枚举实例是否相等(如果枚举值相等则返回 true,否则返回 false)静态方法:
from() 创建一个枚举实例,检查暂无开放 Issues,或尚未同步最近议题。