2011-09-05 100 views
1

我正在尋找的是如何正確地實現與Zend框架服務層一個很好的例子,Doctrine2ZF1 Doctrine2服務層

我已經看到了一些實現,但所有的人都從控制器時訪問EM實例化服務,我認爲這可能是錯誤的或不是?

〔實施例: http://cobbweb.me/2010/11/integrate-doctrine-2-zend-framework-application/

我也得到了this project但真的不知道如何實現它:

感謝

+0

真的沒有「錯誤」。主要是你是否想要或需要通過引入其他用於代替EM的其他東西來使你的架構更復雜(例如服務定位器,工廠等) –

+0

@JaniHartikainen嗯,你可能會談論zf2。示例鏈接很好起點,我以前用過它。我所能說的是前往github並下載一些情侶存儲庫。 Chekout這些guyz #dynamicguy #luxemate #szjani #cobbweb和... –

回答

1

使用輔助作用就像一個工廠服務:

  • 當您在Fron中註冊實例時,您需要創建一個Action Helper並在其上注入EntityManager t控制器。
  • 此動作助手在direct()方法中接收工廠應創建的服務類的名稱作爲參數。
    • 在這個方法裏面,你應該嘗試實例化所請求的服務類,然後返回它(或者如果找不到它,則拋出異常)。
  • 讓你的服務類作爲參數在構造函數中接收EntityManager並在工廠建造期間注入它。

其餘的應該已經清楚了。在你的控制器中,你只需要使用類似的東西:

SomeController extends Zend_Controller_Action { 

    //... 
    public function someAction() 
    { 
     $myService = $this->_helper->service('MyService'); 
     $myService->doSomething(); 
    } 
}