【发布时间】:2019-12-10 13:43:26
【问题描述】:
我有一个关于 Laravel 的项目,需要进行重构。我已经阅读了关于服务提供者和依赖注入的内容并且有一些问题。
这是一个简短的结构:user 模型、event 模型、favorite user 模型等。此外,所有模型都有控制器。每个event 都有一个creator 和client(user 关系)。在每一堂课中,我都在注入适当的服务:User Service、Event service、Favorite user service 等。
让我们考虑这个例子——我想deleteuser:
class UserController extends Controller
{
/**
* @var UserService $userService
*/
protected $userService;
/**
* UserController constructor.
* @param UserService $userService
*/
public function __construct(UserService $userService)
{
$this->userService = $userService;
}
protected function delete(int $id)
{
$user = User::find($id);
if ($user) {
$this->userService->setUser($user);
$this->userService->delete();
}
}
在用户服务中,我正在处理用户删除 - 更新相应的字段。另外,我需要取消所有用户事件并删除喜欢的用户。
我的问题是我应该在哪里做?我应该在UserController 或UserService 中注入event 和favorite user 服务吗?或者也许有更好的方法来执行此操作。提前谢谢
【问题讨论】:
-
没有“最好”的方法可以做到这一点,imo。确保您没有违反任何 OOP 原则。在我看来,你不是。我会在用户服务类中注入任何其他服务,但会使用接口而不是具体类来进行解析。 (程序到接口,而不是实现)使用事件似乎是一个从服务类中加载一些负担的好主意。但是,如果这就是它的全部复杂性,那对我来说似乎有点矫枉过正。
标签: laravel laravel-5 eloquent