2011-07-31 17 views
23

まず、私はPHPの初心者です。そして、ここに質問を掲示しました: Refactoring require_once file in a project 。私はできる限り多くのフロントコントローラーについて読むことを試みましたが、それがどのように機能するのか、それとも何ができるのかを知ることはできません。Front Controllerとは何ですか?そして、それはPHPでどのように実装されていますか?

誰かが簡単にどのように動作するのか、何について説明できますか?

ありがとうございました。

+0

それはエントリーの単一ポイントです。すべての要求はフロントコントローラによって処理されます。 http://en.wikipedia.org/wiki/Front_controllerを読んだことがありますか? –

+1

そうですが、そのリンクからはそれに関する多くの情報が得られません。それはどのようにして行われますか? –

答えて

42

フロントコントローラは、アプリケーションの単一のコンポーネントがアプリケーションの他の部分へのすべての要求を処理することを担当するデザインパターンを指します。残りのアプリケーションで必要とされる共通の機能を集中管理します。フロントコントローラ機能の一般的な例として、テンプレート、ルーティング、およびセキュリティが挙げられます。このデザインパターンを使用する利点は、これらの関数の動作を変更する必要がある場合、アプリケーションのわずかな部分のみを変更する必要があることです。

ウェブ用語では、ドメインのすべての要求は、単一のエントリポイント(フロントコントローラ)によって処理されます。

例:フロントコントローラのルーティング機能。 Apacheが提供するPHPを使用すると、次のようになります。最も重要なステップは、フロントコントローラへのすべての要求をリダイレクトすることです:

の.htaccess

RewriteEngine On 
RewriteRule . /front-controller.php [L] 

フロントcontroller.php

<?php 

if ($_SERVER['REQUEST_URI'] == '/help') { 
    include 'help.php'; 
} elseif ($_SERVER['REQUEST_URI'] == '/calendar') { 
    include 'calendar.php'; 
} else { 
    include 'notfound.php'; 
} 
+0

なぜバックスラッシュ 'RewriteRuleを削除しないとうまくいかなかったのですか? front-controller.php [L] '? –

+0

これもまた、内部の再指示のループを引き起こしました! –