从数据库加载zend配置参数

时间:2014-07-15 05:44:55

标签: php zend-framework

在我的一个项目(使用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配置参数。

1 个答案:

答案 0 :(得分:0)

一般算法应该是这样的:

  1. 启动常规配置

  2. 之后你引导db initialisation

  3. 然后,您初始化ldap配置并将其与config

  4. 合并

    所以我将下一个方法添加到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中配置我的配置,因此您应该根据需要调整我的示例。