yii2-enum

Enumerable helper

Github星跟踪图

Enum implementation for Yii Framework 2.0

Latest Stable Version Total Downloads License
Build Status
Scrutinizer Code Quality

Support us

Does your business depend on our contributions? Reach out and support us on Patreon.
All pledges will be dedicated to allocating workforce on maintenance and new awesome stuff.

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist yii2mod/yii2-enum "*"

or add

"yii2mod/yii2-enum": "*"

to the require section of your composer.json file.

Available Methods:

  • createByName() - Creates a new type instance using the name of a value.
  • getValueByName() - Returns the constant key by value(label)
  • createByValue() - Creates a new type instance using the value.
  • listData() - Returns the associative array with constants values and labels
  • getLabel()- Returns the constant label by key
  • getConstantsByName() - Returns the list of constants (by name) for this type.
  • getConstantsByValue() - Returns the list of constants (by value) for this type.
  • isValidName() - Checks if a name is valid for this type.
  • isValidValue() - Checks if a value is valid for this type.

Declaration

<?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',
    ];
}

Enum creation

$status = new PostStatus(PostStatus::PENDING);

// or you can use the magic methods

$status = PostStatus::PENDING();

Static methods

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

Type-Hint and Validation Rules

<?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;
    }
}

主要指标

概览
名称与所有者yii2mod/yii2-enum
主编程语言PHP
编程语言PHP (语言数: 1)
平台
许可证MIT License
所有者活动
创建于2014-09-01 12:15:20
推送于2019-11-02 17:52:13
最后一次提交2019-11-02 19:52:12
发布数10
最新版本名称1.7.1 (发布于 )
第一版名称1.0 (发布于 )
用户参与
星数63
关注者数4
派生数14
提交数37
已启用问题?
问题数6
打开的问题数1
拉请求数0
打开的拉请求数0
关闭的拉请求数0
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?