yii2mod / yii2-enum
Yii2 可枚举助手
1.7.1
2017-04-19 22:06 UTC
Requires
- php: >=5.6
- yiisoft/yii2: *
Requires (Dev)
README
Yii2 枚举扩展
为 Yii Framework 2.0 实现枚举
支持我们
您的业务依赖于我们的贡献吗?联系我们并在 Patreon 上支持我们。所有承诺都将用于分配人力维护和新奇事物。
安装
安装此扩展的首选方式是通过 composer。
运行
php composer.phar require --prefer-dist yii2mod/yii2-enum "*"
或添加
"yii2mod/yii2-enum": "*"
到您的 composer.json
文件的 require 部分中。
可用方法
createByName()
- 使用值名称创建新的类型实例。getValueByName()
- 通过值(标签)返回常量键。createByValue()
- 使用值创建新的类型实例。listData()
- 返回包含常量值和标签的关联数组。getLabel()
- 通过键返回常量标签。getConstantsByName()
- 返回此类型的常量列表(按名称)。getConstantsByValue()
- 返回此类型的常量列表(按值)。isValidName()
- 检查名称是否对此类型有效。isValidValue()
- 检查值是否对此类型有效。
声明
<?php namespace app\models\enums; use yii2mod\enum\helpers\BaseEnum; class PostStatus extends BaseEnum { const PENDING = 0; const APPROVED = 1; const REJECTED = 2; const POSTPONED = 3; /** * @var string message category * You can set your own message category for translate the values in the $list property * Values in the $list property will be automatically translated in the function `listData()` */ public static $messageCategory = 'app'; /** * @var array */ public static $list = [ self::PENDING => 'Pending', self::APPROVED => 'Approved', self::REJECTED => 'Rejected', self::POSTPONED => 'Postponed', ]; }
枚举创建
$status = new PostStatus(PostStatus::PENDING); // or you can use the magic methods $status = PostStatus::PENDING();
静态方法
PostStatus::getConstantsByValue() // ['PENDING', 'APPROVED', 'REJECTED', 'POSTPONED'] PostStatus::getConstantsByName() // ['PENDING' => 0, 'APPROVED' => 1, 'REJECTED' => 2, 'POSTPONED' => 3] PostStatus::isValidName(1) // false PostStatus::isValidName('APPROVED') // true PostStatus::isValidValue(1) // true PostStatus::isValidValue('Approved') // false PostStatus::listData() // ['Pending', 'Approved', 'Rejected', 'Postponed'] PostStatus::getLabel(1) // Approved PostStatus::getValueByName('Approved') // 1
类型提示和验证规则
<?php use models\enums\PostStatus; use yii\db\ActiveRecord; class CommentModel extends ActiveRecord { public function rules() { return [ ['status', 'default', 'value' => PostStatus::APPROVED], ['status', 'in', 'range' => PostStatus::getConstantsByName()], ]; } public function setStatus(PostStatus $status) { $this->status = $status->getValue(); } public function getStatus() { return $this->status; } }