您始终可以获得前端控制器的引用:
$front = Zend_Controller_Front::getInstance();
从那里你可以得到引导:
$bootstrap = $front->getParam("bootstrap");
从引导程序中,您可以获得引导程序插件:
if ($bootstrap->hasPluginResource("database")) { $dbResource = $bootstrap->getPluginResource("database"); } $db = $dbResource->getDatabase();
但这是一个额外的管道!
老实说,在引导期间将数据库适配器对象存储在注册表中会更好:
protected function _initDatabase() { $params = array( 'host' => '', 'username' => '', 'password' => '', 'dbname' => '', ); $database = Zend_Db::factory('PDO_MYSQL', $params); $database->getConnection(); Zend_Registry::set("database", $database); return $database; }
然后你可以在任何地方获得数据库适配器
Zend_Registry::get("database");
另请参阅我对使用数据库处理程序提供Zend应用程序的"正确"方法的回答
您始终可以获得前端控制器的引用:
$front = Zend_Controller_Front::getInstance();
从那里你可以得到引导:
$bootstrap = $front->getParam("bootstrap");
从引导程序中,您可以获得引导程序插件:
if ($bootstrap->hasPluginResource("database")) { $dbResource = $bootstrap->getPluginResource("database"); } $db = $dbResource->getDatabase();
但这是一个额外的管道!
老实说,在引导期间将数据库适配器对象存储在注册表中会更好:
protected function _initDatabase() { $params = array( 'host' => '', 'username' => '', 'password' => '', 'dbname' => '', ); $database = Zend_Db::factory('PDO_MYSQL', $params); $database->getConnection(); Zend_Registry::set("database", $database); return $database; }
然后你可以在任何地方获得数据库适配器
Zend_Registry::get("database");
另请参阅我对使用数据库处理程序提供Zend应用程序的"正确"方法的回答
太糟糕了,没有什么样Zend_Controller_Action
的getInvokeArg("bootstrap")
一个插件.您始终可以通过前端控制器获取引导程序引用:
$db = Zend_Controller_Front::getInstance()->getParam("bootstrap")->getResource("database");
但我通常做的是
Zend_Registry::set('database', $database);
然后在你的插件中:
try { $db = Zend_Registry::get('database'); } catch (Zend_Exception $e) { // do stuff }
更容易,并且可以在应用程序的任何位置检索数据库.
[我需要检查另一台机器上的一些工作代码.我相信它是这样的...]
$db = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('db');