nick-denry/managed-constant-models

允许通过独立的类模型声明带有命名属性的常量

0.1.0 2021-04-25 21:58 UTC

This package is auto-updated.

Last update: 2024-09-25 21:12:16 UTC


README

允许通过独立的类模型声明带有命名属性的常量

Latest Stable Version Total Downloads Latest Unstable Version License

安装

安装此扩展的首选方式是通过 composer

运行

php composer.phar require --prefer-dist nick-denry/managed-constant-models

或者

"nick-denry/managed-constant-models": "^0.1.0"

将以下内容添加到您的 composer.json 文件的 require 部分。

使用方法

  1. 创建管理常量模型

    <?php
    
    namespace app\models;
    
    use nickdenry\managedConstants\interfaces\ManagedConstantInterface;
    use nickdenry\managedConstants\traits\ManagedConstantTrait;
    
    /**
    * TaskStatus constant model
    */
    class TaskStatus implements ManagedConstantInterface
    {
    
        use ManagedConstantTrait;
    
        const ACTIVE = 0;
        const DONE = 1;
        const _ATTRIBUTES = [
            self::ACTIVE => [
                'class' => 'task-active',
                'label' => 'Активна',
            ],
            self::DONE => [
                'class' => 'task-done',
                'label' => 'Завершена',
            ],
        ];
    
    }
  2. 与您的其他模型类(例如 yii2 模型)一起使用

    <?php
    
    namespace app\models;
    
    use app\models\TaskStatus;
    
    /**
    * This is the model class for table "task".
    *
    * @property int $id
    * @property string $title
    * @property int|null $created_at
    * @property int|null $updated_at
    */
    class Task extends \yii\db\ActiveRecord
    {
        ...
        /**
        * Get task statuses.
        */
        public static function getStatuses()
        {
            return new TaskStatus(); //TaskStatus()::class;
        }
        ...
    
    }
  1. 通过代码获取常量

    <?php
    
    $constValue = Task::getStatuses()::ACTIVE; //$constValue = 0;
    
    Task::getStatuses()::ACTIVE; // ACTIVE constant;
    Task::getStatuses()::DONE; // DONE constant;
    Task::getStatuses()::constants(); // Returns array ['ACTIVE' => 0, 'DONE' => 1]
    Task::getStatuses()::values(); // Returns array [0, 1]
    Task::getStatuses()::listAttributes($constValue); // Returns array ['class' => 'task-active', 'label' => 'Активна']
    Task::getStatuses()::attribute($constValue, 'class'); // Returns 'task-active'
    
    Task::getStatuses()::getList(); 
    // Returns [
    //    ['id' => 0, 'class' => 'task-active', 'label' => 'Активна', ]
    //    ['id' => 1, 'class' => 'task-done', 'label' => 'Завершена', ],
    // ]