2012-05-30 47 views
-4

该手册适用于RedBean suggests a method for integrating the ORM into Zend Framework将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。

也有需要适当整合和可能从配置通过的application.ini受益红豆的某些特征: - 为Fusemodels

如何红豆ORM类似的方式被集成到Zend框架更高效 Zend的

+0

是不是readbean已经懒惰加载?如果是的话,这应该是有效的。 – hakre

回答

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连接也是可能的,但这需要在代码中进行一些挖掘。

+0

+1这工作对我来说,谢谢! –

相关问题