[英]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.