Я после некоторого ввода/руководства. У меня есть приложение, которое использует центральный реестр конфигурации, как показано ниже..
Приложение анализирует каталог конфигурации на наличие файлов ini и устанавливает массивы в класс, используя имя файла в качестве индекса, а также, при необходимости, отдельные переменные конфигурации.
Я вижу несколько возникающих проблем, в том числе:
- Конфликты имен между файлами и переменными, установленными в скрипте
Невозможность извлечения вложенных переменных массива приводит к следующему коду:
$databases = config::get('база данных'); $actual_record = $базы данных['по умолчанию'];
У меня возник соблазн добавить второй параметр get для вложенного значения, однако что произойдет в будущем, если мне нужно будет получить значение 3-го или 4-го уровня.
class config
{
private static $registry;
/**
*
*/
private function __construct() {}
/**
*
*/
public static function get($key)
{
if (isset(self::$registry[$key])) return self::$registry[$key];
else return FALSE;
}
/**
*
*/
public static function set($key, $value, $overwrite = FALSE)
{
// Does the variable already exist?
if (isset(self::$registry[$key]) && $overwrite === FALSE)
throw new Exception();
self::$registry[$key] = $value;
}
}
Заранее спасибо за помощь..
config::getNested('database')->get('default'). В качестве альтернативы, как насчет того, чтобы не вкладывать их, если это возможно? Как насчет того, чтобы разделить их точкой?config::get('database.default')- person Dan   schedule 06.02.2012