所以我正在使用Laravel框架在php中开发一个Web应用程序。我有12个模型和1个控制器,12个存储库链接到模型。在每个存储库中,我正在使用查询编写一些函数,因此它们不会在控制器中重复。我试图在控制器构造函数中注入存储库,并且不知道它们中有多少是太多了?
我听说,它通常是1或2,但到目前为止我有12个。
控制器:
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 :(得分:0)
正如评论中所说,太多是主观的。但是,如果你发现自己提出这个问题可能意味着有一些值得重新考虑的事情。这也是非常主观的。
从我的观点来看,以及我对MVC的理解,存储库的重点是关注点的分离。也许您的控制器应该负责更多它?
在我们构建的应用程序中,我们决定使用Repositories作为业务逻辑的容器。这不是传统的模式,但你会发现任何设计模式在某些情况下往往会弯曲或折断。
问题是:您的PageController
确实需要ReviewsRepository
,BuyerRepository
,CityRepository
等方面的可见度吗?或者您可以将此逻辑封装到PageRepository
类中,然后该类负责提供PageController
所需的正确数据吗?此外,您可以将不同的相关存储库移动到它们自己的父存储库中,从而抽象出更复杂的部分,以进一步减少依赖关系。
所以这个故事的寓意就是当我发现自己在问这个太多了吗?",这通常意味着我需要看一下抽象。这并不意味着你必须这样做,但退后一步也不会伤害。