PHP 最大存储库数
PHP maximum number of repositories
所以我正在 php 使用 Laravel 框架开发一个网络应用程序。我有 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;
}
}
正如评论中所说,太多是主观的。但是,如果您发现自己在问这个问题,那可能意味着有些事情值得重新思考。这又是非常主观的。
从我的角度和我对 MVC 的理解来看,存储库的全部意义在于关注点分离。也许您的 Controller 应该负责更多?
在我们构建的应用程序中,我们决定使用存储库作为业务逻辑的容器。这不是传统模式,但您会发现在某些情况下,任何设计模式通常都会以弯曲或损坏告终。
问题是:您的 PageController
是否真的需要在 ReviewsRepository
、BuyerRepository
、CityRepository
等方面可见?或者您能否将此逻辑封装到 PageRepository
class 中,然后由它负责提供您的 PageController
所需的正确数据?此外,您可以将不同的相关存储库移动到它们自己的父存储库中,从而抽象出其中更复杂的部分以进一步减少您的依赖性。
所以故事的寓意是当我发现自己在问 "is this too much?" 时,这通常意味着我需要看抽象。这并不意味着你必须这样做,但退一步永远不会有坏处。
所以我正在 php 使用 Laravel 框架开发一个网络应用程序。我有 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;
}
}
正如评论中所说,太多是主观的。但是,如果您发现自己在问这个问题,那可能意味着有些事情值得重新思考。这又是非常主观的。
从我的角度和我对 MVC 的理解来看,存储库的全部意义在于关注点分离。也许您的 Controller 应该负责更多?
在我们构建的应用程序中,我们决定使用存储库作为业务逻辑的容器。这不是传统模式,但您会发现在某些情况下,任何设计模式通常都会以弯曲或损坏告终。
问题是:您的 PageController
是否真的需要在 ReviewsRepository
、BuyerRepository
、CityRepository
等方面可见?或者您能否将此逻辑封装到 PageRepository
class 中,然后由它负责提供您的 PageController
所需的正确数据?此外,您可以将不同的相关存储库移动到它们自己的父存储库中,从而抽象出其中更复杂的部分以进一步减少您的依赖性。
所以故事的寓意是当我发现自己在问 "is this too much?" 时,这通常意味着我需要看抽象。这并不意味着你必须这样做,但退一步永远不会有坏处。