Библиотека для хранения списков констант
Добавлено: 2021.04.26, 11:27
В продолжении темы https://www.yiiframework.ru/forum/viewtopic.php?t=19635 сделал небольшую библиотеку для удобной организации хранения списков констант.
https://github.com/nick-denry/managed-constant-models
Другая модель или класс
Доступ из связанной модели или другого класса
Подробнее здесь https://github.com/nick-denry/managed-c ... /README.md
https://github.com/nick-denry/managed-constant-models
Код: Выделить всё
<?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' => 'Завершена',
],
];
}
Код: Выделить всё
class Task extends \yii\db\ActiveRecord
{
...
/**
* Get task statuses.
*/
public static function getStatuses()
{
return new TaskStatus(); //TaskStatus()::class;
}
...
}
Доступ из связанной модели или другого класса
Код: Выделить всё
<?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' => 'Завершена', ],
// ]