1

私は最近、いくつかの個人的なプロジェクトのために PHP フレームワークを研究してきましたが、それらのほとんどはフロント コントローラーを使用して応答を模倣しているようです。コントローラーはリクエストからパラメーターを取得し、ロジックに応じて適切なヘッダーを送信して再ルーティングします。これが「対応」です。これは PHP でこれを行うための最良の方法ですか、それとも再ルーティングと応答を処理する方法について他の理論がありますか?

4

2 に答える 2

3

フロント コントローラーは Web 環境に非常に適しているため、すべての要求をアプリケーションに集中させることができます。HTTP はステートレスであり、ある意味では、ユーザーは偶然にアプリの一部に出くわす可能性があるため (つまり、ランダムな URL にアクセスするなど)、フロント コントローラーを使用すると、アプリケーションのエントリ ポイントを判断し、適切に応答できます。

編集:コメントに応えて、混乱は、JavaがPHPよりもはるかに多くの構造を持っているため、全体が複雑になりすぎている可能性があると思いますか?最終的に、PHP はリクエストからレスポンスまでの非常に基本的なやり取りを提供できます。

switch($_GET['page']) {
  case "one";
      print "page one!";
      break;
  default:
      print "default page";
      break;
}

そこから、あらゆる種類のものをフロントコントローラーにレイヤー化して、要求オブジェクトをフィルターチェーンに渡し、ページコントローラーに渡します。ページコントローラーは、適切なモデルに再ルーティングします。ページコントローラーは、db 抽象化レイヤーを介してデータを取得し、フィルター処理して、コントローラーにバックアップし、ランダムなイベントフックを起動している間、適切な応答を構築するビューに進みます。最終的には、探している複雑さ/分離のレベルを選択するのは (開発者としての) あなた次第です。これはPHPの美と悪の両方です:)

于 2008-10-12T03:14:34.283 に答える
1

見たフレームワークの応答オブジェクトとHttp応答を混同していると思います。フロントコントローラーはアプリケーションのゲートウェイです。すべての(http)リクエストはフロントコントローラーを通過し、適切なコントローラー/アクションにルーティングされます。要求を処理しても、応答が返される必要はありません(多くの場合、要求はサーバーに情報を送信することだけを目的としています)が、すべての要求はフロントコントローラーを通過します。

リクエストオブジェクトは、環境とhttpリクエストパラメータをカプセル化し、それらを取得するためのAPIを提供するためによく使用されます。その補完である応答オブジェクトは、生成ヘッダーを含むhttp応答を生成するプロセスをカプセル化するためによく使用されます。

ページコントローラーなど、PHPに固有ではない(フロントコントローラーでもない)リクエストとルーティングを処理する方法は他にもあります。また、MVC構造をまったく使用しない方法もあります。

于 2008-10-12T04:23:01.103 に答える