-1

所以我正在使用 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;
}
}
4

1 回答 1

0

正如评论中所说,太多是主观的。但是,如果您发现自己问这个问题,那可能意味着有些事情值得重新思考。这又是非常主观的。

从我的观点和我对 MVC 的理解来看,存储库的全部意义在于关注点分离。也许您的控制器应该负责更多?

在我们构建的应用程序中,我们决定使用存储库作为业务逻辑的容器。这不是传统的模式,但您会发现任何设计模式在某些情况下往往最终会弯曲或损坏。

问题是:您PageController真的需要 , , 等的可见ReviewsRepositoryBuyerRepositoryCityRepository?或者您能否将此逻辑封装到一个PageRepository类中,然后由该类负责提供您PageController需要的适当数据?此外,您可以将不同的相关存储库移动到它们自己的父存储库中,从而抽象出其中更复杂的部分,以进一步减少您的依赖关系。

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

于 2016-12-28T23:50:59.380 回答