您的基本方法是正确的。
对于缓存配置内容,请将您的生产值保存在全局文件中。这应该存在于您的 VCS 中。(编辑:但是,您可能应该省略安全敏感配置,例如数据库密码。通过 local.php 将这些内容添加到生产环境中,以使其不受版本控制)。
在您的本地环境中,使用本地文件来覆盖任何需要被覆盖的东西。IIRC ZendSkeletonApplication 有一个 .gitignore 文件,它将忽略任何内置的本地配置——因此您的本地配置永远不会进入 git。
但是,您不需要像您一样在引导程序上加载配置。您可以从工厂方法中的 serviceManager 获取配置:
public function getServiceConfig() {
try {
return array (
'factories' => array(
...
'Zend\Cache\Adapter\MemcachedOptions' => function ($serviceManager) {
return new MemcachedOptions(array(
// you can just grab your config from the service-manager
'ttl' => $serviceManager->get('Config')['cache_ttl'],
...
));
},
...
)
);
}
...
}
另外-我不会将'cache_ttl'作为顶级配置键。相反,请尝试:
全局.php
return array(
'cache' => array(
'ttl' => ...,
'servers' => ...,
...
)
);
这将您的工厂简化为:
'Zend\Cache\Adapter\MemcachedOptions' => function ($serviceManager) {
return new MemcachedOptions( $serviceManager->get('cache') );
},
你可以在你的 local.php 配置中覆盖任何你想要的东西。如果您只想更改 ttl(保留所有其他全局配置):
本地.php
return array(
'cache' => array('ttl'=>...)
);