3

Stackに関するかなりの数の投稿と、オンラインで私に推奨されているいくつかの資料を読んだ後、MVCパターンは非常に自由に解釈できるので、別の説明で答えないでください。ありがとう!

私は今、自分のPHP MVCの設計の終わりに近づいており、ビューを進めるための2つの可能な方法があります。

しかし、最初に、私のコントローラーは現在非常に馬鹿げており、クラスが含まれておらず、適切なモデルからパブリックメソッドを呼び出して、適切なビューをレンダリングするだけです。

ビューは必要に応じて含まれるため、当然、オブジェクトはすべてのメソッド(delete / updateなど)とともにコンストラクターを介して使用できます。

私の最初のオプションは、ビューでこのようなものを使用してデータを取得することです

foreach($object->fetchData() as $data)  

次に、結果をループします。しかし、一部の人々はこれに同意せず、そのような方法はビューから除外されるべきであると提案しました。代わりに、これをコンストラクターの変数に割り当ててから、ビューでこの変数を使用することをお勧めします。

//constructor
$fetched_data = $object->fetchData()

// view
foreach($featched_data as $data)

縫い目が乱雑で不必要なので、私はこれがあまり好きではありません。

私のすべての重要なメソッドがビューで利用できるようになっているので、これは問題と見なすことができますか?

それで、ここに質問があります。それをそのままにして、データをレンダリングするためにモデルで新しいメソッドを作成しますか(上記のように)、またはコンストラクターでクラスを作成し、モデルをその中に拡張し、モデルの重要な関数を保護してから、 CONSTRCUTORのパブリックメソッドのみを読み取りますか?

ありがとう!

4

1 に答える 1

0

コンストラクターでクラスを作成します。モデルを拡張することは、はるかに安全なアプローチであるだけでなく、ビューでの関数の呼び出しを最小限に抑えることにもなります。複数のビューがあると仮定すると、各ビューで毎回メソッド関数を呼び出すよりも、コンストラクターデータにアクセスする方がはるかに簡単です。

コンストラクターやブートストラップをクラスター化する代わりに、メソッド関数を呼び出してデータをビューに直接渡すクラスをコントローラーに追加できます。

于 2012-08-10T09:41:28.860 に答える