我想問你一些關於Laravel的SOLID原則,其實這是關於單一責任原則的問題。Laravel的SOLID
我們假設我有ExcelController類,其中我將用戶導入數據庫。我也有UserController其中我有createUser方法。問題是ExcelController無法從UserController擴展,因爲它已經從Controller擴展。所以在這種情況下,我應該創建UserTrait並在那裏放置createUser方法?
什麼是最好的方法?
我想問你一些關於Laravel的SOLID原則,其實這是關於單一責任原則的問題。Laravel的SOLID
我們假設我有ExcelController類,其中我將用戶導入數據庫。我也有UserController其中我有createUser方法。問題是ExcelController無法從UserController擴展,因爲它已經從Controller擴展。所以在這種情況下,我應該創建UserTrait並在那裏放置createUser方法?
什麼是最好的方法?
我寧願建議您創建服務User
並且擁有此服務中的所有方法。而從ExcelController
電話:
(new UserService())->import($parameters);
,並從UserController
電話:
(new UserService())->create($parameters);
在laravel你可以使用Service Container
和寫類似:
$userService = $this->app->make('UserService');
$userService->import($parameters);
// or
$userService->create($parameters);
使用此解決方案而不是將創建方法置於用戶模型中的優點是什麼? –
你將擁有1層這樣的東西,不要與模型混合。 另外,如果您的方法與模型1相關的模型與模型2相關的數量很多 - 不清楚這個方法必須放置在模型1還是模型2中,但是使用這種方法它只有一層 - 服務'。 –
謝謝你的努力。 –
'createUser'應的方法模型。 –
爲什麼你不使用用戶模型? –
是的,謝謝你,我應該把它放在模型中。 –