当前位置:  开发笔记 > 编程语言 > 正文

如何在Zend Framework的控制器插件中获取引导资源

如何解决《如何在ZendFramework的控制器插件中获取引导资源》经验,为你挑选了3个好方法。

您始终可以获得前端控制器的引用:

$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应用程序的"正确"方法的回答



1> Bill Karwin..:

您始终可以获得前端控制器的引用:

$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应用程序的"正确"方法的回答



2> typeoneerror..:

太糟糕了,没有什么样Zend_Controller_ActiongetInvokeArg("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
}

更容易,并且可以在应用程序的任何位置检索数据库.



3> allnightgroc..:

[我需要检查另一台机器上的一些工作代码.我相信它是这样的...]

$db = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('db');

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有