2016-11-25 26 views
0

我在local/config/xxx/config.inilocal/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還會合並指定目錄中的應用程序配置globbed(通常爲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

相關問題