Php 拉维固体
我想问你们关于拉威尔的坚实原则,实际上是关于单一责任原则的问题 假设我有ExcelController类,在该类中我将用户导入数据库。我还有UserController,其中我有createUser方法。问题是ExcelController无法从UserController扩展,因为它已经从Controller扩展。那么在这种情况下,我应该创建UserTrait并在那里放置createUser方法吗Php 拉维固体,php,laravel,Php,Laravel,我想问你们关于拉威尔的坚实原则,实际上是关于单一责任原则的问题 假设我有ExcelController类,在该类中我将用户导入数据库。我还有UserController,其中我有createUser方法。问题是ExcelController无法从UserController扩展,因为它已经从Controller扩展。那么在这种情况下,我应该创建UserTrait并在那里放置createUser方法吗 最好的方法是什么?我建议您创建服务User,并将所有方法都包含在此服务中。从ExcelContr
最好的方法是什么?我建议您创建服务
User
,并将所有方法都包含在此服务中。从ExcelController
调用:
(new UserService())->import($parameters);
(new UserService())->create($parameters);
并从UserController
调用:
(new UserService())->import($parameters);
(new UserService())->create($parameters);
在laravel中,您可以使用服务容器
编写如下内容:
$userService = $this->app->make('UserService');
$userService->import($parameters);
// or
$userService->create($parameters);
我建议您创建服务
User
,并将所有方法都包含在此服务中。从ExcelController
调用:
(new UserService())->import($parameters);
(new UserService())->create($parameters);
并从UserController
调用:
(new UserService())->import($parameters);
(new UserService())->create($parameters);
在laravel中,您可以使用服务容器
编写如下内容:
$userService = $this->app->make('UserService');
$userService->import($parameters);
// or
$userService->create($parameters);
createUser
应该是一个模型的方法。为什么不使用用户模型?是的,谢谢,我应该把它放在模型中。createUser
应该是一个模型的方法。为什么不使用用户模型?是的,谢谢,我应该把它放在模型中。使用这个解决方案而不是把create方法放在用户模型中的好处是什么?你将有一个层来存放所有类似的东西,不要把它和模型混合在一起。另外,如果您有与模型1和模型2同样相关的方法,则不清楚该方法必须放在模型1或模型2中的何处,但使用这种方法,它仅为1层-服务
。感谢您的努力。@forexknight很乐意提供帮助!)使用此解决方案而不是将create方法放入用户模型有什么好处?对于所有类似的内容,您将有一个层,并且不要将其与模型混合。另外,如果您有与模型1和模型2同样相关的方法,则不清楚该方法必须放在模型1或模型2中的何处,但使用这种方法,它仅为1层-服务
。感谢您的努力。@forexknight很乐意提供帮助!)