indifferend / yii2-enum
Yii2 可枚举助手
2.1
2021-06-02 17:24 UTC
Requires
- php: >=5.6
- yiisoft/yii2: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.0
- phpunit/phpunit: ~6.0
This package is auto-updated.
Last update: 2024-09-29 05:49:08 UTC
README
Yii2 枚举扩展
Yii Framework 2.0 的枚举实现
支持我们
您的业务是否依赖于我们的贡献?通过Patreon联系我们并支持我们。所有承诺都将用于维护和开发新功能。
安装
安装此扩展的首选方式是通过composer。
运行以下命令:
php composer.phar require --prefer-dist indifferend/yii2-enum "*"
或者将以下内容添加到您的 composer.json
文件的 require 部分:
"indifferend/yii2-enum": "*"
可用方法
createByName()
- 使用值的名称创建一个新的类型实例。getValueByName()
- 通过值(标签)返回常量键。createByValue()
- 使用值创建一个新的类型实例。listData()
- 返回包含常量值和标签的关联数组。getLabel()
- 通过键返回常量标签。getConstantsByName()
- 返回此类型的常量列表(按名称)。getConstantsByValue()
- 返回此类型的常量列表(按值)。isValidName()
- 检查名称是否对此类型有效。isValidValue()
- 检查值是否对此类型有效。
声明
<?php namespace app\models\enums; use indifferend\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; } }