-4

RedBean手册建议了一种将 ORM 集成到 Zend Framework 中的方法

从手册: -

打开 Zend 引导文件并添加:

   public function run() {
         $loader = Zend_Loader_Autoloader::getInstance()->registerNamespace("RedBean_");
         require_once( APPLICATION_PATH . "/../library/RedBean/redbean.inc.php"); //or rb.php
         R::setup( "mysql:host=localhost;dbname=timereg", "root" );
         Zend_Registry::set("tools", R::$toolbox);
         Zend_Registry::set("db", R::$adapter);
         Zend_Registry::set("redbean", R::$redbean);
         parent::run();
   }

这种方法在我看来并不是最有效的,因为在每个控制器中都设置了 ORM,无论是否需要。它也使用了我不喜欢的 Zend_Registry。

RedBean 的某些功能也需要正确集成,并且可能会受益于通过 application.ini 进行的配置:-

RedBean ORM 如何以更高效的Zend 方式集成到 Zend 框架中?

4

1 回答 1

4

根据 redbean.inc.php 的功能,我认为您无法将其效率提高太多。在文件中请求和设置数据库连接的开销可能不大。

我会将建议的代码稍微更改为:

protected function _initRedBean()
{
    $loader = Zend_Loader_Autoloader::getInstance()->registerNamespace("RedBean_");
    require_once APPLICATION_PATH . "/../library/RedBean/redbean.inc.php"; //or rb.php
    R::setup( "mysql:host=localhost;dbname=timereg", "root" );
    Zend_Registry::set("tools", R::$toolbox);
    Zend_Registry::set("db", R::$adapter);
    Zend_Registry::set("redbean", R::$redbean);
}

利用引导程序的内置资源加载,而不是覆盖 run() 方法(不好的做法)。

如果您还使用 Zend_Db,可以简单地传入现有的 PDO 连接,以避免创建第二个连接,但这需要在代码中进行一些挖掘。

于 2012-05-30T21:14:28.247 回答