2012-05-30 83 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這工作對我來說,謝謝! –

相關問題