Zend framework Zend框架中基于模块的application.ini

Zend framework Zend框架中基于模块的application.ini,zend-framework,configuration,module,Zend Framework,Configuration,Module,我希望在我的应用程序中有基于模块的application.ini 可能吗 基本需求的产生是因为我有多个数据库依赖于模块 请导游 在确定模块之前很久就会读取application.ini。我建议您忘记application.ini,转而尝试编写一个控制器插件,该插件将根据选择的模块加载一些额外的配置 您可以在application.ini中使用多个Db: resources.db.master.adapter = "PDO_MYSQL" resources.db.master.d

我希望在我的应用程序中有基于模块的application.ini

可能吗

基本需求的产生是因为我有多个数据库依赖于模块


请导游

在确定模块之前很久就会读取application.ini。我建议您忘记application.ini,转而尝试编写一个控制器插件,该插件将根据选择的模块加载一些额外的配置

您可以在application.ini中使用多个Db:

resources.db.master.adapter          = "PDO_MYSQL"
resources.db.master.default          = false
resources.db.master.params.dbname    = "db1"
resources.db.master.params.host      = "127.0.0.1"
resources.db.master.params.username  = "root"
resources.db.master.params.password  = ""
resources.db.slave.adapter           = "PDO_MYSQL"
resources.db.slave.default           = true
resources.db.slave.params.dbname     = "db2"
resources.db.slave.params.host       = "127.0.0.1"
resources.db.slave.params.username   = "root"
resources.db.slave.params.password   = ""
并在引导中初始化:

    public function _initDatabase() {
        $config = $this->getApplication()->getOption('resources');

        $dbArrays = array();
        foreach($config['db'] as $name => $dbConf){
            // Set up database
            $db = Zend_Db::factory($dbConf['adapter'], $dbConf['params']);
            $db->query("SET NAMES 'utf8'");
            $dbArrays[$name] = $db;

            if((boolean)$dbConf['default']){                
                Zend_Db_Table::setDefaultAdapter($db);
            }
            unset($db);
        }

        Zend_Registry::set("db", $dbArrays);
    }
在我的情况下,我总是将每个适配器保存在注册表中,以便以后可以单独使用它们。 我还创建了一个新类,该类扩展了Zend_Db_表,其中我有自己的getAdapter($name),如下所示:

在每种车型中,我都可以做到:

$this->getAdapter('slave')->fecthAll($sql);
$this->getAdapter('master')->fecthAll($sql);
$this->getAdapter('slave')->fecthAll($sql);
$this->getAdapter('master')->fecthAll($sql);