将RedBean ORM集成到Zend Framework中

时间:2012-05-30 20:06:25

标签: php zend-framework redbean

RedBean suggests a method for integrating the ORM into 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从配置中受益: -

如何以更加高效 Zend的方式将RedBean ORM集成到Zend Framework中?

1 个答案:

答案 0 :(得分: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);
}

利用bootstrap的内置资源加载,而不是重写run()方法(不好的做法)。

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

相关问题