-2

モデルに getThumbnail() という関数があります。

ビューファイルでこの関数を呼び出すにはどうすればよいですか。

現在、私が使用しなければならないものは次のとおりです。

<?php
$tmp = new Model();
echo $tmp->getThumbnail(1);
?>

View から直接 Model を呼び出すのは正しくないように見えるため、これを達成する他の方法はありますか。

4

2 に答える 2

2

これを正しく行う方法は非常に幅広いトピックであり、正解は 1 つではありません。ただし、ビュー内でモデル クラスをインスタンス化することは絶対に間違っていることを 1 つ指摘しておきます。代わりに、次のいずれかを行う必要があります。

  1. のインスタンスをModelコントローラーからビューに渡す、または
  2. コントローラーからビューに「ディスパッチャー」オブジェクトを渡します。これにより、ビューは任意または一部のモデル関数を間接的に呼び出すことができます。次に例を示します。

    echo $dispatcher->dispatch('Model', 'getThumbnail', 1);
    

    このディスパッチャーが許可するモデルメソッドが制限されている場合、適切な関心の分離を強制することは非常に理にかなっています。たとえば、ビューは、モデルの状態を変更するような呼び出しを行うべきではありませんUser::createNewUser。ビューは、「パッシブ」モデル メソッドを呼び出してデータを取得することのみを許可する必要があります。

ここで重要なのは、特定のモデル呼び出しを直接ハードコーディングするのではなく、依存関係をビューに注入することです。これは、ビューとモデルの関係だけでなく、あらゆる依存関係にほぼ当てはまります。

于 2013-10-22T14:44:35.680 に答える
1

ビューからモデルを呼び出すのは得策ではありません。

ビューはコントローラーの手先です。モデルはコントローラからのみ通信する必要があります。

于 2014-03-29T20:10:30.640 に答える