V-K*_*V-K 6 laravel eloquent laravel-5
我有一个关于 Laravel 的项目,需要进行重构。我已经阅读了关于服务提供者和依赖注入的内容,并有一些问题。这是一个简短的结构:user模型、event模型、favorite user模型等等。此外,所有模型都有控制器。每个event都有一个creator和client(user关系)。在每类中,我注入适当的服务:User服务,Event服务,Favorite user服务等让我们考虑的例子-我想delete的user:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
在用户服务中,我正在处理用户删除 - 更新相应的字段。另外,我需要取消所有用户事件并删除喜欢的用户。我的问题是我应该在哪里做?我应该在或 中注入event和favorite user服务吗?或者也许有更好的方法来执行此操作。提前谢谢UserControllerUserService
似乎您有很多操作取决于删除用户,所以我会考虑使用事件并在每个监听器内部处理它的细节。
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)
{
if(!$this->userService->delete($id)) {
// return some error;
}
event(new UserWasRemoved($id));
// return success response
}
Run Code Online (Sandbox Code Playgroud)
class DeleteUserService {
protected $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function delete($id){
return $this->user->delete($id);
}
}
Run Code Online (Sandbox Code Playgroud)
// app/Providers/EventServiceProvider
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
UserWasRemoved::class => [
CancelUserEvents::class,
RemoveUserFavorites::class,
// etc...
],
];
}
Run Code Online (Sandbox Code Playgroud)