2017-08-29 6 views
0

私はLaravelの固い原則についてお聞きしたいと思いますが、実際には単一責任の原則に関する質問です。LaravelのSOLID

私が持っていると仮定しましょうExcelController私はデータベースにユーザーをインポートするクラスです。私もUserController私はcreateUserの方法を持っているメソッドがあります。問題はExcelControllerが既にControllerから拡張されているため、ExcelControllerをUserControllerから拡張できないことです。だからこの場合、私はUserTraitを作成し、そこにcreateUserメソッドを置くべきですか?

どのような方法が最適ですか?

+2

:あなたはService Containerを使用してのようなものを書くことができますlaravelで

(new UserService())->create($parameters); 

ExcelControllerコールからモデル。 –

+0

なぜユーザーモデルを使用しないのですか? –

+0

ねえ、ありがとう、私はモデルに配置する必要があります。 –

答えて

3

サービスUserを作成し、このサービス内にすべてのメソッドを用意することをお勧めします。

(new UserService())->import($parameters); 

UserControllerコールから:: `createUser`はの方法でなければなりません

$userService = $this->app->make('UserService'); 
$userService->import($parameters); 
// or 
$userService->create($parameters); 
+0

Userモデルにcreateメソッドを追加する代わりに、このソリューションを使用するメリットは何ですか? –

+0

あなたはそのようなすべてのものに対して1つのレイヤーを持ち、それをモデルと混用しません。 また、モデル2に関してモデル1に関連するメソッドがある場合、このメソッドをモデル1またはモデル2に配置する必要があるかどうかは不明ですが、このアプローチでは1つのレイヤーだけです'。 –

+0

ありがとうございました。 –

関連する問題