2016-12-28 55 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所需的正确数据?此外,您可以将不同的相关仓库移动到他们自己的父仓库中,从而抽取更复杂的部分以进一步减少依赖关系。

故事的寓意是当我发现自己问“这太多了?”时,通常意味着我需要看抽象。这并不意味着你必须这样做,但退一步不会伤害。