0

私は自分の会社のために新しいウェブサイトを作成することに従事しようとしています。PHPは中小企業であり、サイト全体の最終ページ数は40〜50ページしかないため、PHPの使用を検討しています。学習とベストプラクティスのために、PHPMVCフレームワークの使用を検討しています。私はいくつか試してみましたが、動的コンテンツを非常にうまく提供しているときにどのように機能するかを確認しました。私が理解していないのは、静的コンテンツを使用してMVCロジックを修正する方法です。

つまり、MVCパターンは、たとえば会社の情報ページのように、動的ではないページをどのように処理するのでしょうか。すべてのHTMLとCSSを含むビューを返すだけの各ページのコントローラーはありますか?コントローラーは他のコントローラーからヘッダーとフッターの情報を取得してから、メインコンテンツを別のビューから取得しますか?私はそれがどのようにうまくいくのか理解していないと思います。誰かELI初心者でしょうか?

4

4 に答える 4

1

すべての HTML と CSS を含むビューを単に返す、各ページのコントローラーはありますか?

ビューとコントローラーを 1:1 の関係にするのが一般的です。MVC を実装する場合、ビューは通常、Web サイトのページ (StackOverflow のユーザー プロファイルなど) を表し、モデル レイヤーの状態に応じて変化します (自分のプロファイルまたは他の人のプロファイルを表示していると考えてください)。

特定のコントローラーは、そのページからのユーザー インタラクションのすべて (またはほとんど) を処理する責任があります。

適切に実装された MVC または MVC にインスパイアされたデザイン パターンでは、コントローラーは (コンストラクターで提供された) ビューの状態のみを変更します。応答の生成 (HTML ページ、HTTP ヘッダー、または JSON ファイルのいずれか) は、ビュー自体によって処理されます。コントローラーはビューを作成するべきではないため、それを返す意味はありません。

コントローラーはヘッダーとフッターの情報を他のコントローラーからプルしてから、別のビューからメイン コンテンツをプルしますか?

HMVC パターン(実際には従来のMVCとは直接関係ありません)を使用している場合は、この動作になります。

適切な MVC または MVC にインスパイアされた構造では、ビューはモデル レイヤーからデータを取得し、その情報に基づいて、複数のテンプレートから HTML ページを組み立てます。PHP で簡単なテンプレートを作成する方法を学びたい場合は、この記事をお読みください。

私はそれがどのように機能するかを理解していないと思います。

その場合、 Martin Fowlerによる「GUI アーキテクチャ」を読むことから始めるべきです。そして、まだ OOP 全体に慣れていない場合は、この投稿の最後にリストされているすべてのレクチャーを視聴してください。


主なトピック

静的ページが大量にある場合は、MVC デザイン パターンを使用してサイトを作成することもできます (基本的には、それらをキャッシュされた構造として扱い、そのビューを assable にすることができます)、それは少し無意味かもしれません。

MVC は複雑な設計パターンであり、 SoCを適用して大規模なアプリケーションに秩序をもたらすことを目的としています。

MVC は魔法のスプリンクリングではありません。額に適用すると、すべてが改善されます。

于 2012-09-12T22:00:11.140 に答える
1

最初に、Yii フレームワークをお勧めします。これは高速で安定しており、すべての関数/メソッドの優れたドキュメントがあります。他のフレームワーク オプション (symfony、cakePhp など) は遅く、学習曲線も遅くなります。

Yii はコントローラ -> アクションでコンテンツを管理します。yourpage.com/site/index に接続すると、yii は SiteController ->actionIndex をロードし、ビュー ファイルに HTML コードをレンダリングします。

すべての Web サイト コンテンツ (ヘッダー/フッター/メニューなど) をページ ファイルに配置し、ビュー ファイルは本文ビューのみを読み込みます。

于 2012-09-12T21:02:59.370 に答える
0

すべてのM、V、およびCコンポーネントが同じドキュメント内にあるため、MVC構造は静的コンテンツに最適な選択ではありません。したがって、これを行うための「正しい方法」はありません。

ただし、いくつかの回避策があります。

それらの1つは、静的コンテンツをモデル(M)に変換し、それをメインテンプレート(プッシュテンプレートの場合)に挿入することです。もう1つは、コンテンツをメインテンプレートを拡張するサブテンプレートにすることです。

于 2012-09-12T20:56:56.197 に答える
0

コントローラのジョブは、モデルにデータを入力し、そのモデルをビューに送信してデータをユーザーに表示することです。データが動的ではなく静的である場合、この責任のパターンは変わりません。コントローラは、静的コンテンツを処理するための「作業」が少なくなります。

于 2012-09-12T20:57:26.007 に答える