我正在尝试进行身份验证,我需要一个适用于MySQL的数据库适配器。目前,我将使用它:
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
但是,当我在application.ini中设置resources.db.*
时,将其硬编码到控制器中是没有意义的。我的问题是,如何让我的控制器获取我的数据库适配器的application.ini中的信息?您能否链接我迫切寻找的相关文档页面?
答案 0 :(得分:2)
要访问您的应用程序资源,您需要访问Zend_Application的引导对象,即您在index.php文件中创建的对象。 Zend_Registry说,你可以将它们中的任何一个存储在任何地方都可以访问的地方。 假设这是你的public / index.php文件:
// suppose you have defined the APPLICATION_PATH constant to the application
// directory of your project. and the APPLICATION_ENV defines your environment
// like production, development or testing.
// create a config for your application configurations, defining your resources
$config = new Zend_Config_Ini(
APPLICATION_PATH . '/configs/application.ini',
APPLICATION_ENV
);
// this is the application object
$application = new Zend_Application(APPLICATION_ENV, $config);
// now resources are bootstrapping
$application->bootstrap();
$bootstrap = $application->getBootstrap();
// store them somewhere in registry, so you could access them from everywhere
// like controllers, models, etc.
Zend_Registry::set('application', $application);
现在在您的控制器(或任何其他代码,如模型,视图等)中,您可以使用以下方式访问此应用程序对象:
$application = Zend_Registry::get('application'):
/*@var $application Zend_Application*/
$bootstrap = $application->getBootstrap();
// now you could access any resources from the $bootstrap object
$db = $bootstrap->getResource('db');
$log = $bootstrap->getResource('log);
// now $db is a Zend_Db object bootstrapped from your application config
这是访问应用程序引导程序的一般方法。但是在控制器中还有另一种方法来访问引导对象(以及资源),并且使用控制器对象的'''getInvokeArg('bootstrap')'''。所以在你的控制器中你可以这样做:
$bootstrap = $this->getInvokeArg('bootstrap');
$db = $bootstrap->getResource('db');
// now $db is a Zend_Db object bootstrapped from your application config
答案 1 :(得分:2)
在run function中的Bootstrap.php文件中添加:
public function run() {
//Any other code you already had in the run function could go here
//Add this line to your function
Zend_Registry::set('options', $this->getOptions());
}
然后在您的控制器中,您可以通过执行以下操作来访问数据库连接设置:
$options = Zend_Registry::get('options')
$host = $options['resources']['db']['params']['host'];
答案 2 :(得分:0)
在您的Bootstrap.php(/application/Bootstrap.php
)文件中,创建一个名为_initDb()
的函数,如下所示:
protected function _initDb()
{
$db = $this->getPluginResource('db');
// ...
}