2016-11-25 4 views
0

У меня есть некоторая конфигурация на local/config/xxx/config.ini и local/config/xxx/config_base.ini.Как получить доступ к локальной конфигурации на Zend Framework 2

Как я могу получить доступ к этой конфигурации в Zend Framework 2. У меня есть экземпляр ServiceProvider, но я не могу получить доступ к этой конфигурации. Он только готов, module.config.php (например, с $config = $sm->get('Config');)

я обнаружил, что я могу использовать это для читать INI файл:

$config = (new Zend\Config\ReaderIni())->fromFile(getcwd() . '/local/config/xxx/config.ini'); 

Но как объединить эти две конфигурации?

+0

Что находится внутри этой конфигурации? – Wilt

ответ

0

При использовании скелетного приложения конфигурация системы по умолчанию находится в config/application.config.php.

/ config.php 
return array(
    'webhost' => 'www.ekio.rw', 
    'database' => array(
     'adapter' => 'pdo_mysql', 
     'params' => array(
      'host'  => 'db.ekio.rw', 
      'username' => 'dbuser', 
      'password' => 'secret', 
      'dbname' => 'mydatabase' 
     ) 
    ) 
); 

Затем

// Consumes the configuration array 
$config = new Zend\Config\Config(include 'config.php'); 

// Display a configuration datum (results in 'www.ekio.rw') 
echo $config->webhost; 
1

Почему бы использовать .ini расширение для ваших конфигурационных файлов? Как вы можете прочитать в файлах documentation on Advanced Configuration Tricks, файлы конфигурации должны храниться как .php файлов. Они содержат массивы, содержащие ключи и значения вашей конфигурации, и они будут автоматически считываться из папок автозагрузки и сливаться с файлами конфигурации модуля.

После того, как конфигурация будет объединена со всеми модулями, ConfigListener также объединит конфигурацию приложения, вложенную в указанные каталоги (обычно config/autoload /).

Здесь вы также можете найти шаблон папки, используемый, чтобы найти файлы, необходимые для слияния:

// An array of paths from which to glob configuration files after 
// modules are loaded. These effectively overide configuration 
// provided by modules themselves. Paths may use GLOB_BRACE notation. 
'config_glob_paths' => array(
    'config/autoload/{{,*.}global,{,*.}local}.php', 
), 

Преимущество заключается в том, что вам не нужен отдельный читателя файл, и вы вы можете получить доступ к своей настраиваемой конфигурации из диспетчера служб, как и для других конфигураций.

$config = $sm->get('Config'); 
$webhost = $config['my_param']; 

Еще одно преимущество заключается в том, что вы можете настроить рабочую среду для кэширования файлов конфигурации, которые значительно повышают эффективность процедуры самонастройки (чтение файлов медленный процесс).

Я бы предложил вам переименовать расширение файла в .php и выполнить документацию по настройке настраиваемых значений конфигурации.

+0

Спасибо за ответ, но на самом деле он не отвечает на мой вопрос. Я ** должен ** использовать файл .ini, потому что компания, которая строит проект, использует этот тип конфигурации. – Simoyw

+0

@Simoyw Тогда я все же думаю, что было бы лучше преобразовать файл 'ini' в файл' php'. – Wilt