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