簡體   English   中英

Laravel-“存儲庫模式”問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM