Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉维固体_Php_Laravel - Fatal编程技术网

Php 拉维固体

Php 拉维固体,php,laravel,Php,Laravel,我想问你们关于拉威尔的坚实原则,实际上是关于单一责任原则的问题 假设我有ExcelController类,在该类中我将用户导入数据库。我还有UserController,其中我有createUser方法。问题是ExcelController无法从UserController扩展,因为它已经从Controller扩展。那么在这种情况下,我应该创建UserTrait并在那里放置createUser方法吗 最好的方法是什么?我建议您创建服务User,并将所有方法都包含在此服务中。从ExcelContr

我想问你们关于拉威尔的坚实原则,实际上是关于单一责任原则的问题

假设我有ExcelController类,在该类中我将用户导入数据库。我还有UserController,其中我有createUser方法。问题是ExcelController无法从UserController扩展,因为它已经从Controller扩展。那么在这种情况下,我应该创建UserTrait并在那里放置createUser方法吗


最好的方法是什么?

我建议您创建服务
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很乐意提供帮助!)