-1

正しい手順に従っていることを願っています。この質問で十分です。検索してもダメだったので、こちらで回答いただけると幸いです。

Laravelを始めたばかりです。私は DDD と呼ばれる新しい設計手法に注目し、できる限りそれを実装したいと考えています。

models フォルダーにある users パッケージがあるとします。ユーザーの検証などの機能にアクセスするためにメイン クラスを使用することは良い習慣でしょうか? このクラスはパッケージのメイン ディレクトリにあり、User と呼ばれます。基本的に、これはリポジトリ、エンティティ、およびサービスをカプセル化します。そうすれば、このデータを必要とするコントローラーが一連の呼び出しで汚染されることはありません。

例: ユーザーのログインを検証するには、次のように呼び出します。

 User->validateUserLogin($username, $password);

それから中にUser->validateUserLogin:

public function validateUserLogin($username, $password)
{
    $user_login = new User_Login_Entity($username, $password);
    // Assume the validation returns a valid User object on successful validation
    $User = User_Validation_Service->ValidateUserCredentials($user_login)
}

私はこれについて間違っていますか?私は SRP がこれの鍵であることを知っていますが、それを十分にフォローしているか、またはまったくフォローしているかどうかはわかりません。基本的に私の考えは、コントローラーからモデル作業への 1 つのエントリ ポイントです。これは、コントローラーがリポジトリー、サービス、およびエンティティーを呼び出すのとは対照的です。

4

2 に答える 2

3

あなたはほとんどそこにいます。コントローラーの POV から、「モデル」を使用する「ユースケース」へのアクセスを提供する必要があります。これを行うコードは、一般にアプリケーション サービスと呼ばれます。モデルとコントローラーの間に配置されます。さて、私が「ユースケース」と言うとき、私が実際に意味しているのは、アプリケーション/システム/サービス/あなたが構築しているすべてのものの状態を変更するアクションであることに注意してください. これには、間接的にクエリであるクエリやその他の質問は含まれません。これらは、データストア上に非常に薄いレイヤーでモデル化するのが最適です。ただし...アプリケーションサービスは完了するためにクエリを実行できますが、それは問題ありません。白黒ではなく、グレーの色合いが違うだけです。コントローラーの観点からは、アクションとクエリを明確に区別することは有益です。

于 2012-09-30T09:37:58.847 に答える
-2
 $User = User_Validation_Service->ValidateUserCredentials($user_login)
          here is the problem ----------------------------------------^

;ステートメントの後にある必要があります

する必要があります

  $User = User_Validation_Service->ValidateUserCredentials($user_login);
于 2012-09-30T04:55:54.880 に答える