2017-03-31 1 views
9

私はMySqlで作業しており、結果/行は配列内に返されます。datamapperはSGBDの結果をオブジェクトとして変換しますか?

最終的に、モデルレイヤ「目標」は、SGBDクエリが処理されるとオブジェクトを返すことです。

したがって、行(または単一の行)をオブジェクトに変換するプロセスをDataMapper(Modelレイヤーの一部)に統合するか、または注入する第3のサービスの責任であるべきかDataMapper?

だからあなた

答えて

3

ありがとう、 オブジェクトに行(または単一の行)を変換するプロセスは、データマッパーに統合されるべきです。

これはデータマッパーの責任です。結果セットではなく、エンティティを返す必要があります。

また、DataMapperに注入される第三者サービスの責任はありますか?

これはまた、可能性があります、私はあなたが探しているものだと思う "UnitOfWork"。 https://www.sitepoint.com/implementing-a-unit-of-work/

あなたはまた、はい、私はサンダーに同意教義ソース https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/EntityManager.php

0

を見てとることができ、あなたのビジネスロジックは別の層でなければなりません。しかし、それはコントローラーではありません。

コントローラからのコマンドに応じて取得され、ビューに表示されモデル格納データ:3番目の部分compresed

enter image description here

クラシックMVC
ビューは、モデルの変更に基づいてユーザーに新しい出力を生成します。
コントローラは、モデルの状態を更新するためにモデルにコマンドを送ることができる(例えば、文書の編集)。また、関連するビューにコマンドを送信して、ビューのモデルの提示を変更することもできる(例えば、文書をスクロールする)。

MVCの任意の部分は独立したパターンです。

アクティブMVC受動存在します。クラシックMVCがアクティブです。

3つのコンポーネント内のアクティブモデルでは、モデルが動作しています。パッシブモデルの実装の主な違いは、アクティブモデルの実装では、モデルがコントローラによって変更されたときにモデルがビューに通知することです。絵の表現はそれをもっとクリアするでしょう。

アクティブなビジネスモデルでは、ロジックはモデルにあり、コントローラは薄いです。

次のことができ

0

をコントローラにデータマッパーを分割し、形質転換のために、あなたのデータを新しいサービスを追加し、モデルにデータを返すと、戻りデータにあなたが結果が必要なときので、コントローラにモデルからオブジェクトを返す方が良いですまたは行は必要なそれぞれを通過することができます。

関連する問題