Хочу увидеть чужой опыт хранения списка констант.
Вот пример на Yii2, что бы было нагляднее:
Код: Выделить всё
namespace common\models\base;
class Page extends \yii\db\ActiveRecord
{
const TYPE_PRODUCT_VALUE = 1;
const TYPE_PRODUCT_TEXT = 'Product';
const TYPE_COLLECTION_VALUE = 2;
const TYPE_COLLECTION_TEXT = 'Collection';
const TYPE_EDITORIAL_VALUE = 3;
const TYPE_EDITORIAL_TEXT = 'Editorial';
const TYPE_NEWS_VALUE = 4;
const TYPE_NEWS_TEXT = 'News';
const TYPE_FEATURE_VALUE = 5;
const TYPE_FEATURE_TEXT = 'Feature';
const TYPE_GENERIC_VALUE = 6;
const TYPE_GENERIC_TEXT = 'Generic Page';
public static function typesByValue() {
return [
self::TYPE_PRODUCT_VALUE => self::TYPE_PRODUCT_TEXT,
self::TYPE_COLLECTION_VALUE => self::TYPE_COLLECTION_TEXT,
self::TYPE_EDITORIAL_VALUE => self::TYPE_EDITORIAL_TEXT,
self::TYPE_NEWS_VALUE => self::TYPE_NEWS_TEXT,
self::TYPE_FEATURE_VALUE => self::TYPE_FEATURE_TEXT,
self::TYPE_GENERIC_VALUE => self::TYPE_GENERIC_TEXT,
];
}
public static function typesByText() {
return array_flip(static::typesByValue());
}
public static function getTypeNameByValue($value, $default = null)
{
return ArrayHelper::getValue(static::typesByValue(), $value, $default);
}
public static function getTypeValueByName($name, $default = null)
{
return ArrayHelper::getValue(static::typesByText(), $name, $default);
}
...
}
Для Yii1, я для себя в рамках одного проекта писал модуль с админкой, который хранил всё это дело в базе и при debug=false, всё хорошенько навечно кэшировал в APC и оперативной памяти в рамках одного скрипта. Было порядка 200 списков для моделей.
Был хелпер примерно с такими методами (пишу на память исходника нет под рукой):
Код: Выделить всё
//Для получения "констант"
SetHelper::getValue($name, $text, $default = null);
SetHelper::getText($name, $value, $default = null);
//Для получения списка
SetHelper::getTextValue($name, $sort = null, $direction = 'ASC'); //return ['Text' => 1 ...]
SetHelper::getValueText($name, $prompt = null, $sort = null, $direction = 'ASC'); //return [1 => 'Text' ...]
//Ещё были методы для получения алиасов текста, которые также хранились в базе и кэшировались (в примере выше нет алиасов)
Выше я рассказал свои спрособы.
Вопрос: как такое храните Вы?
ps: если вдруг "также", буду признателен за ответ -> "также"