yii2mod/yii2-enum

Yii2 可枚举助手

安装数: 708,822

依赖项: 34

建议者: 0

安全: 0

星标: 63

关注者: 5

分支: 15

开放性问题: 1

类型:yii2-extension

1.7.1 2017-04-19 22:06 UTC

This package is auto-updated.

Last update: 2024-08-29 03:35:51 UTC


README

Yii2 枚举扩展


为 Yii Framework 2.0 实现枚举

Latest Stable Version Total Downloads License Build Status Scrutinizer Code Quality

支持我们

您的业务依赖于我们的贡献吗?联系我们并在 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;
    }
}