2011-12-28 55 views
1

如果您希望在整個應用程序中共享查詢,則會在其中放置查詢。應將持久性邏輯放在教義中何處?

在存儲庫中放置持久性邏輯是否是一個好主意,以便存儲庫不僅可以用於查詢,還可以創建和更新對象?

是否有任何其他地方的持久性邏輯不在控制器本身?

回答

3

把它放進service layer。在這種情況下,您的控制器只知道服務層,但不知道存儲庫層。服務層可以將查詢委託給存儲庫層,或者單獨執行 - 我更喜歡後者。

只是一個基本的例子:

class CommentService 
{ 
    private $em; 

    public function __construct(EntityManager $em) 
    { 
     $this->em = $em; 
    } 

    public function find($id) 
    { 
     // do a query here or delegate to a repository 
    } 

    public function findByPost(Post $post) 
    { 
     // do a query here or delegate to a repository 
    } 

    public function save(Comment $comment) 
    { 
     // exec an operation here 
    } 

    public function delete(Comment $comment) 
    { 
     // exec an operation here 
    } 
} 
+0

什麼有關文件夾明智?按照文檔中的說明,我的實體位於我的Zend項目的lib文件夾中,是否應該將我的存儲庫放在他們的旁邊? – jere 2012-01-10 01:29:07

相關問題