MVC パターンに関して、ビュー レイヤーは HTML データを「返す」関数であると想定されていますか、それともビュー レイヤーは実際には HTML データそのものですか?
5 に答える
Web 用の MVC にインスパイアされたパターンのビュー クラス (従来の MVC を Web に実装するのは非常に難しく、PHP だけでは不可能です) は、プレゼンテーション ロジックを担当します。次に、リクエストへの応答を作成し、複数のテンプレートをジャグリングします。
モデルレイヤーから選択したビューに情報を取得する方法は、MVC にインスパイアされたどのパターンが実装されているかによって大きく異なります。MVP または MVVM を使用している場合、情報はコントローラーによって提供され、ビューはパッシブになります (ただし、ビューはダム テンプレートではありません)。Model2 MVC または HMVC パターンを使用する場合、ビューがアクティブになり、モデル レイヤーからの情報が要求されます。
このビューは情報を取得すると、結合するテンプレートを決定します。または、テンプレートが必要な場合でも。そして、レスポンスを作成します。
各ビューが生成する応答は、HTML、JSON、XML、または単なるプレーン テキストにすることができます。または、必要に応じて、HTTP ヘッダーのみを送信します (リダイレクトを行う場合など)。これはすべてプレゼンテーション ロジックの一部です。
モデル、コントローラー、およびビューの境界線は、次のように表示できます。
/* model models/post.php */
<?php
class Post {
public static all() {
return Array(...);
}
}
?>
/* controller /posts/index.php */
<?php
require "../../models/post.php"
$posts = Post.all();
require "../../views/posts/index.php"
?>
/* view /views/posts/index.php */
<?php foreeach ($posts as $post): ?>
<p><?php echo $post['name']; ?></p>
<?php endforeach; ?>
イデオロギー的には単なる関数かもしれませんが、一般的な慣行はテンプレート エンジンのテンプレートのようなものです。したがって、ビューレイヤーはhtml + data insertions
(取得方法と理由のロジックなしで)です。ここでもイデオロギー的には関数でもありますが、たとえばフレームワークのプログラミング言語の関数ではありません。
ビューは「テンプレート」
モデルは「データ」
コントローラーは「コネクター」であり、アルゴリズムの場所です。
ビューレイヤーは、プレゼンテーションとしてクライアントに表示したいものを受けます。ほとんどの場合、それは HTML、CSS、および Javascript であり、XML および JSON も使用できます。
一般的に、
コントローラーはモデルにデータを提供するように依頼します。
コントローラーは、必要に応じてこのデータを変更できます。
コントローラーはデータを View に送信し、template/html を使用して表示します。
View Layer は、HTML データを返す関数です。