在我的一个项目(使用Zend框架)中,我当前正在从ini文件中检索LDAP配置。我的客户想要将其更改为数据库配置。
即,我想从DB读取LDAP配置,然后将其绑定到ini文件中的其他资源参数。有没有办法做到这一点?
在我的local.ini文件中,我有以下配置
ldap.server.host = "host"
ldap.server.username = "user"
ldap.server.password = "pwd"
ldap.server.baseDn = "DC=comp,DC=com"
ldap.server.accountDomainName = "abc.intra"
ldap.server.accountDomainNameShort = "dell"
在我的引导程序中,
protected function _initLocalConfig()
{
$globalConfig = new Zend_Config($this->getOptions(), true);
try {
$localConfig = new Zend_Config_Ini(APPLICATION_PATH . '/configs/local.ini');
$globalConfig->merge($localConfig);
$this->setOptions($globalConfig->toArray());
} catch (Zend_Config_Exception $e) {
throw new Exception('File /configs/local.ini not found. Create it, it can be empty.');
}
}
有人可以告诉我如何从DB检索上述LDAP参数然后将其绑定到Zend配置参数。
答案 0 :(得分:0)
一般算法应该是这样的:
启动常规配置
之后你引导db initialisation
然后,您初始化ldap配置并将其与config
所以我将下一个方法添加到bootstrap.php
protected function _initConfig()
{
$config = new Zend_Config($this->getApplication()->getOptions(), true);
Zend_Registry::set('config', $config);
}
protected function _initLDAPConfig()
{
$this->bootstrap('config');
$this->bootstrap('db');
$globalConfig = Zend_Registry::get('config');
try {
/**
* Do a database query to get your ldap config from database
* and convert it to array
*/
$globalConfig->merge(new Zend_Config($ldapConfig));
} catch (Zend_Config_Exception $e) {
throw new Exception('Failed bootstraping LDAP config');
}
}
注意:我总是在Zend_Registry中配置我的配置,因此您应该根据需要调整我的示例。