[英]Laravel - 'Repository Pattern' questions
使用Laravel 4,我目前有一個用於所有存儲庫的區域,然后將這些存儲庫綁定到要使用的接口。 目前所有這些都可以使用,我可以使用標准的$this->users->find(1)
方法在控制器中訪問它們。
在我的用戶存儲庫中,我有我的我的model/User.php
類的assignRole(附加)和removeRole(分離)方法。 好的,但是現在我嘗試使用雄辯的類來運行我的種子,例如User::create();
。
問題1:我的種子文件也應該也使用存儲庫模式嗎? 我沒有說過Mongo的經驗,但是如果我要切換,是否也會以相同的方式為數據庫添加種子?
問題2:我的Auth
驅動程序當前使用的是雄辯的...如果我也更改了該怎么辦? 我是否應該為我的auth建立一個存儲庫並實現$this->auth->login($user)
。
對於何時應該實現存儲庫接口,我確實感到困惑。 artisan migrate
運行種子文件,該文件當前創建一個MySQL數據庫,如果我想使用Mongo或NoSQL DB會發生什么?
好問題。
對每個問題的簡短回答是“取決於”。
使用種子-如果您嚴格遵守模式,那么可以,您的種子可能應該使用存儲庫模式。 但是,對我來說-我的種子往往是用於快速的一次性數據庫填充和/或用於測試目的,因此使用Eloquent可能是可以的。
再次使用Auth驅動程序,如果您想嚴格遵守模式,那么可以,您應該應該對接口進行編碼-但問自己是否將來真的要更改Auth實現-以及是否額外的工作/成本確實值得。
每個項目的需求,預算,尤其是上線后的更改可能性,都是獨一無二的。 您只需要評估這些因素並為每個項目確定最佳方法。
正如Taylor Otwell( 作者或laravel )在他的《 從學徒到工匠》一書中提到的那樣,存儲庫是一種分離關注點的方法,可以避免胖胖的控制者。
也就是說,它們用於包含應應用於您的業務對象的業務邏輯,這些業務邏輯是由數據庫中的數據構造而成的...
因此,如果您問我是否在種子類中使用這種包裝,那么我個人不會這樣做,因為種子(大多數情況下)不需要任何業務邏輯,並且在n層體系結構中,種子可以被視為屬於DATA層。
如果有的話,播種必須應用一些業務邏輯,那么您可能想要這樣做。 如果員工的經驗不足一年左右,也許您會阻止插入某些薪水。.這種邏輯
很久以前,我寫了一篇小文章,介紹了一個簡單的關注點分離場景,以說明我們是如何使用它的。
如果您有興趣,可以在coderwall上查看
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.