web/ディレクトリを見てみると、2つのPHPファイル: index.phpとfrontend_dev.phpが見つかります。 これらのファイルはフロントコントローラーと呼ばれます: アプリケーションへのすべてのリクエストはこれらを通して行われます。 しかしなぜアプリケーションごとにフロントコントローラーを2つ用意するのでしょうか?
web/
index.php
frontend_dev.php
両方のファイルは同じアプリケーションを指し示しますが環境は異なります。 運用サーバーで直接開発する場合を除いて、アプリケーションを開発するとき、複数の環境が必要です:
環境を使いわける基準は何でしょうか? たとえば開発環境では、アプリケーションはデバッグ作業を楽にするためにリクエストの詳細をすべてログに記録する必要がありますが、 コードへのすべての変更が即座に反映されるようにするためにキャッシュシステムを無効にしなければなりません。 ですので、開発環境は開発用に最適化しなければなりません。 最良の例は例外が起きるときです。 開発者が問題を速くデバッグするのを手助けするために、symfonyは現在のリクエストに関するすべての情報を持つ例外をブラウザーに表示します:
しかし開発環境では、キャッシュレイヤーは有効にしなければならず、もちろんアプリケーションは生の例外の代わりにカスタマイズされたエラーメッセージを表示しなければなりません。 ですので、運用環境ではパフォーマンスとユーザーエクスペリエンスのために最適化しなければなりません。
tip
フロントコントローラーのファイルを開くと、環境設定以外の内容が同じであることがわかります:
// web/index.php <?php require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php'); $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false); sfContext::createInstance($configuration)->dispatch();
Webデバッグツールバーも環境の使い方のすばらしい例です。 これは開発環境のすべてのページに存在し、異なるタブをクリックすることでたくさんの情報: 現在のアプリケーションの設定、現在のリクエスト用のログ、データベースエンジンで実行されるSQLステートメント、メモリの情報と時間の情報にアクセスできます。
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.