我想知道如果在控制器构造函数中注入多个服务是错误的吗?有没有办法让它更清洁?
示例(UserController):
public function __construct(
UserService $userService, NewsService $newsService, PaginateService $paginateService, GroupsService $groupsService, HolidaysService $holidaysService,
CalendarService $calendarService
)
{
parent::__construct();
$this->userService = $userService;
$this->newsService = $newsService;
$this->paginateService = $paginateService;
$this->groupsService = $groupsService;
$this->holidaysService = $holidaysService;
$this->calendarService = $calendarService;
}
除此之外,我还想知道在注入存储库的服务是否合适 - 例如:我有UserService,在constrcutor中我注入了UserRepository。
示例(UserService):
class UserService {
protected $userRepository;
function __construct(UserRespository $userRepository) {
$this->userRepository = $userRepository;
}
public function getUsers() {
$this->userRepository->getAllUsers();
}
}
答案 0 :(得分:1)
我个人喜欢遵循控制器没有任何自定义方法的模式。因此,您最终会得到许多非常薄的控制器,并最终会阻止您的上述情况(一个控制器依赖于大量服务)。
所以我会将这些服务分解为控制器用例
使用resource
index
update
store
create
edit
等通用destroy
方法。
我喜欢使用的另一个模式是使用app
帮助程序,而不是将依赖项注入构造函数。
所以你可以使用app(calendarService::class)->method()
这样可以减少代码,减少遗忘。