![](/img/trans.png)
[英]How can I access the configuration of a Zend Framework application from a controller?
[英]How to access at the local configuration on Zend Framework 2
我在local/config/xxx/config.ini
和local/config/xxx/config_base.ini
。
如何在Zend Framework 2上在那里進行配置。我有ServiceProvider的實例,但是無法在這些配置下進行訪問。 它只准備好module.config.php
(例如$config = $sm->get('Config');
)
我發現我可以用它來讀取一個ini文件:
$config = (new Zend\Config\ReaderIni())->fromFile(getcwd() . '/local/config/xxx/config.ini');
但是,然后如何合並這兩種配置?
為什么要對配置文件使用.ini
擴展名? 如您所見, 有關高級配置技巧的文檔,配置文件應存儲為.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
並按照文檔設置自定義配置值。
使用框架應用程序時,系統配置默認為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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.