2016-12-28 56 views
-1

所以我正在使用Laravel框架在PHP中開發一個Web應用程序。我有12個模型和1個控制器,以及12個連接到模型的存儲庫。在每個存儲庫中,我正在用查詢編寫一些函數,因此它們不會在控制器中重複使用。我試圖在控制器構造函數中注入存儲庫,並且不知道它們中有多少是太多?我聽說,它的1或2平常,但我有12個到目前爲止。PHP最大數量的存儲庫

控制器:

class PagesController extends Controller { 
    protected $review; 
    protected $organization; 
    protected $user; 
    protected $city; 
    protected $buyer; 
    protected $employee; 

    public function __construct(ReviewRepository $review, OrganizationRepository $organization, UserRepository $user, CityRepository $city, BuyerRepository $buyer, EmployeeRepository $employee) { //here are just 6 repositories, I have much more 
     $this->employee = $employee; 
     $this->city = $city; 
     $this->buyer = $buyer; 
     $this->user = $user; 
     $this->organization = $organization; 
     $this->review = $review; 
} 

庫:

class ReviewRepository { 

protected $review; 

function __construct(Review $review) 
{ 
    $this->review = $review; 
} 
} 

回答

0

正如在評論已經說了,太多的是主觀的。但是,如果你發現自己問這個問題可能意味着有值得重新思考的東西。這又是非常主觀的。

從我的角度,以及我對MVC的理解,知識庫的整個觀點是關注的分離。也許你的控制者對它應該有更多的責任?

在我們構建的應用程序中,我們決定使用Repositories作爲業務邏輯的容器。這不是傳統模式,但您會發現任何設計模式在某些情況下往往會彎曲或斷裂。

問題是:您的PageController確實需要ReviewsRepositoryBuyerRepositoryCityRepository等的可見性嗎?或者你能否將這個邏輯封裝到一個PageRepository類中,然後負責提供你的PageController所需的正確數據?此外,您可以將不同的相關倉庫移動到他們自己的父倉庫中,從而抽取更復雜的部分以進一步減少依賴關係。

故事的寓意是當我發現自己問「這太多了?」時,通常意味着我需要看抽象。這並不意味着你必須這樣做,但退一步不會傷害。