2017-08-29 82 views
0

我想問你一些關於Laravel的SOLID原則,其實這是關於單一責任原則的問題。Laravel的SOLID

我們假設我有ExcelController類,其中我將用戶導入數據庫。我也有UserController其中我有createUser方法。問題是ExcelController無法從UserController擴展,因爲它已經從Controller擴展。所以在這種情況下,我應該創建UserTrait並在那裏放置createUser方法?

什麼是最好的方法?

+2

'createUser'應的方法模型。 –

+0

爲什麼你不使用用戶模型? –

+0

是的,謝謝你,我應該把它放在模型中。 –

回答

3

我寧願建議您創建服務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); 
+0

使用此解決方案而不是將創建方法置於用戶模型中的優點是什麼? –

+0

你將擁有1層這樣的東西,不要與模型混合。 另外,如果您的方法與模型1相關的模型與模型2相關的數量很多 - 不清楚這個方法必須放置在模型1還是模型2中,但是使用這種方法它只有一層 - 服務'。 –

+0

謝謝你的努力。 –