Php 如何避免构造函数臃肿

Php 如何避免构造函数臃肿,php,laravel,Php,Laravel,无论如何都要避免在构造函数上传递太多的参数。就像我将在某个服务提供商中注册我的类,它将自动将其注入我的类中一样 IssueController.php public function __construct() { $this->oProjectLogic = new ProjectLogic(new LibJIRA(), new LibJqlBuilder(), new ProjectModel()); $aModels = [new In

无论如何都要避免在构造函数上传递太多的参数。就像我将在某个服务提供商中注册我的类,它将自动将其注入我的类中一样

IssueController.php

    public function __construct()
    {
        $this->oProjectLogic = new ProjectLogic(new LibJIRA(), new LibJqlBuilder(), new ProjectModel());
        $aModels = [new InspectionModel(), new LinkStoryModel(), new ProjectModel(), new UserModel()];
        $this->oIssueLogic = new IssueLogic(new LibJIRA(), new LibJqlBuilder(), $this->oProjectLogic, ...$aModels);
    }

    public function __construct(LibJIRA $oJiraLibrary, LibJqlBuilder $oBuilderLibrary, $oProjectLogic, $oInspectionModel, $oLinkStoryModel, $oProjectModel, $oUserModel)
    {
        $this->oJiraLibrary = $oJiraLibrary;
        $this->oBuilder = $oBuilderLibrary;
        $this->oInspectionModel = $oInspectionModel;
        $this->oLinkStoryModel = $oLinkStoryModel;
        $this->oProjectModel = $oProjectModel;
        $this->oProjectLogic = $oProjectLogic;
        $this->oUserModel = $oUserModel;
    }

IssueLogic.php

    public function __construct()
    {
        $this->oProjectLogic = new ProjectLogic(new LibJIRA(), new LibJqlBuilder(), new ProjectModel());
        $aModels = [new InspectionModel(), new LinkStoryModel(), new ProjectModel(), new UserModel()];
        $this->oIssueLogic = new IssueLogic(new LibJIRA(), new LibJqlBuilder(), $this->oProjectLogic, ...$aModels);
    }

    public function __construct(LibJIRA $oJiraLibrary, LibJqlBuilder $oBuilderLibrary, $oProjectLogic, $oInspectionModel, $oLinkStoryModel, $oProjectModel, $oUserModel)
    {
        $this->oJiraLibrary = $oJiraLibrary;
        $this->oBuilder = $oBuilderLibrary;
        $this->oInspectionModel = $oInspectionModel;
        $this->oLinkStoryModel = $oLinkStoryModel;
        $this->oProjectModel = $oProjectModel;
        $this->oProjectLogic = $oProjectLogic;
        $this->oUserModel = $oUserModel;
    }


有很多依赖注入库。或者Laravel本身附带的IoC容器(作为应用程序容器)