我更喜欢使用本机php进行Zend配置。 我如何将这个Zend application.ini段转换为php?
[development : production]
生产部分据说继承自开发部分。 P.S我们在这里谈论ZEND框架。
更新:我的问题看起来不太清楚。
我想知道的是,与ini或xml相比,Zend_Application如何处理php选项文件中的继承/嵌套。
INI配置示例 (生产部分的所有内容都将由测试和开发部分继承):
[production]
autoloaderNamespaces[] = "My_"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
[testing : production]
bootstrap.class = "productionBootstrap"
[development : production]
bootstrap.class = "developmentBootstrap"
XML配置示例 (生产部分中的所有内容都将由暂存部分继承,注释extends关键字):
<?xml version="1.0"?>
<configdata>
<production>
<webhost>www.example.com</webhost>
<database>
<adapter>pdo_mysql</adapter>
<params>
<host>db.example.com</host>
<username>dbuser</username>
<password>secret</password>
<dbname>dbname</dbname>
</params>
</database>
</production>
<staging extends="production">
<database>
<params>
<host>dev.example.com</host>
<username>devuser</username>
<password>devsecret</password>
</params>
</database>
</staging>
</configdata>
PHP配置示例 没有继承/嵌套? 有没有办法在不进行手动数组合并的情况下进行继承/嵌套工作?
return array(
'production' => array(
$test1 => 'aaaaaaa'
),
'staging' => array(
$test2 => 'bbbbbb'
),
'testing' => array(
$test3 => 'bbbbbb'
)
)
更新
回想起来 - 只是想补充说使用php数组而不是ini文件进行配置有一定的优势: some info
·它们可以通过操作码缓存来缓存
·它们支持常量
·它们允许创建易于阅读的配置树
·它们支持布尔值和整数值
答案 0 :(得分:1)
在Zend_Config
中有一个支持标量的补丁。
见
由于多种原因,补丁未被接受进入干线,因此无法保证不会产生任何副作用。该补丁也相当陈旧,因此可能需要进行一些调整才能使其与最新版本的Zend_Config
一起使用。
为了了解如何解决问题,它可能会有所帮助。
答案 1 :(得分:1)
我不确定你的意思,但你可以在你的php文件中使用你的配置模拟这个:
$configProduction = array(
'database' => $db1,
'url' => 'www.production.com',
);
$configDevelopment = array(
'url' => 'www.test.com',
);
//ENV is set in bootstrap or htaccess or php.ini
switch (APPLICATION_ENV) {
case 'production':
$config = $configProduction;
break;
case 'development':
$config = array_merge($configProduction, $configDevelopment);
break;
}