Я организую каждый справочник как класс и там инкапсулирую метод хранения данных. На этапе разработки можно хранить массивом PHP, но в продакшене в большинстве случаев использую БД, а так как метод хранения инкапсулирован в класс, то переход от массива к БД безболезненен.
//Dev version
class ExampleDict{
private static $_array = array(1=>'value1',2=>'value2');
public static function getValues(){
return self::$_array;
}
}
//Prod version
class ExampleDict{
private static $_array;
public static function getValues(){
if(empty(self::$_array)){
self::reloadValues();
}
return self::$_array;
}
public static function reloadValues(){
self::$_array = app::db->queryAssoc('select `id`,`value` from `dict`','id','value');
}
}
Метод app::db->queryAssoc('select `id`,`value` from `dict`','id','value) - взят от балды, не знаю чем ты пользуешься, должен возвращать ассоциативный массив 'id'=>'value'
Ну и это один из вариантов, примитивный, написан из головы, через статические методы. В Yii я пользуюсь моделями ActiveRecord, там работа не со статическими методами