2

モデルをどのように構築すればよいか、かなり混乱しています。過去 9 か月間、これを理解できませんでした。私はすべての参照を読んで見ていますが、@teresko がくれました。

質問をさらに絞り込むために、以前からこれをどのように行ったかの例を挙げます。

、last_name`studentを持つエンティティがあるとしましょうstudent_numberfirst_name,

次に、いわゆるmodel, を作成します (私の教授も同じことをしましたが、これはまったく間違っていることはわかっています)。私の教授が値オブジェクトを知っているかどうかはわかりませんが、私は知っています。

private $student_number;
private $first_name;
private $last_name;

public function setStudentNumber($sn) {$this->student_number = $sn}
public function getStudentNumber() {return $this->student_number}
... and so on for other properties

私が正しければ、このセッターとゲッターは値オブジェクト パターンとして分類され、次のように使用できます。

$s = new Student();
$s->setStudentNumber(143);
$s->setFirstName('FooName');
$s->setLastName('BarName');

そして、次のようにデータ アクセス オブジェクト (StudentDAO) に渡します。

$sDao = new StudentDAO($s);
$sDao->add();

DAO はデータベース クラスを拡張するため、たとえば CRUD を実行できます。

問題は、私があまりにも多くの原則を逃したことについて、ここで多くの叱責を受けることになると確信していますが、それらは何ですか? モデルを作成するにはどうすればよいですか? ありがとうございました!まあ、私はよく理解できない DataMappers、Factory などについて多くの回答が教えてくれることを知っています。

4

2 に答える 2

3

モデル:

  • Dao : データソース (つまり、ファイル、データベース/SQL、Web サービスなど) に接続します。
  • Mapper : 外部データを Dao から内部エンティティ/ドメイン オブジェクト (ゲッター/セッター) にマップし、内部データを外部にマップします。
  • サービス: ビジネス ロジック。

コントローラー

  • アクション コール サービス層 (Mapper や Dao ではない)

依存関係: Service -> Mapper -> Dao つまり、Dao は Mapper に注入され、Mapper は Service に注入されます。

このようにして、データソースをデータベースから Web サービスに変更でき、ビジネス ロジックは同じままです。

注意: Dao と Mapper の両方にインターフェースがあることをお勧めします。

于 2013-05-14T12:18:57.197 に答える
1

多くの原則について知らないことを強調しているので、http: //symfony.com/ を見て、モデル層にドクトリンを使用することをお勧めします (スタンドアロン プロジェクトでドクトリンを使用するのは難しいため)。(または他の同様の MVC フレームワーク) それらをどのように使用するかを理解したら、それらの原則を理解し始めます。Symfony は、基本的な Web アプリケーションを実行するためのセットアップが簡単で、優れたドキュメントも用意されています。

于 2013-05-15T12:42:40.177 に答える