Symfony2のディレクトリ説明

前回まではSymfony2が動作する設定を行ったのでここからはSymfony2の簡単な説明でもします。

先ずはSymfony2のディレクトリ構成の説明から。
読んで分からない内容があると思いますが、
開発していくと徐々に分かると思うのでこんなもんだと覚えてくださいな。


Symfony2は標準ではこんな感じのディレクトリになっています。

上から順に説明していきます。

  • app

これはSymfony2の設定ファイルやログファイル等がおかれています。
直下にある「console」というファイルを使ってコマンドを実行しますがどんなコマンドがあるかは今後説明します。

cacheディレクトリは、その名の通りキャッシュを保存するディレクトリで、Symfony2ではアプリが実行されると初回実行であれば、このディレクトリにphpのキャッシュを保存してくれます。2回目以降はこのキャッシュファイルを使うので表示が早くなります。

configディレクトリは、データベースの設定するファイル等があります。
logsディレクトリは、その名の通りログファイルが作成されます。
Resourcesディレクトリは、アプリ全体で共通となるhtmlテンプレート等をおくディレクトリとなります。詳しい事は今後説明します。

  • src

srcディレクトリは自分が作成するアプリケーションをおくディレクトリとなります。
デフォルトではAcmeというアプリケーション(Symfony2ではアプリケーションとは呼ばずにバンドルという)が存在します。

  • vendor

これは外部ライブラリが保存(Symfony2ではバンドルという)されるディレクトリとなります。
もし、Symfony2用の便利なバンドルが公開されていた場合、ここに保存します。(他にバンドルを追加する方法はあるのですがディレクトリの説明ということで)

  • web

前回も説明しましたが、Apacheでいうドキュメントルートになります。この直下にindex.htmlやimageファイル、cssファイルなどをおきます。
要は外部公開ディレクトリみたいなもんですね。
ここで肝心なのはapp_dev.phpとapp.phpです。

Symfony2の場合、必ずapp.phpが呼び出されるように直下にある.htaccessでこんな風に定義されています。


    RewriteEngine On

    #
    #    RewriteBase /
    #

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]

詳しい説明は省きますが、mod_rewriteを使ってapp.phpが必ず呼び出されます。

なぜこんな事をしているかまでは説明しませんが、こんな物だと覚えておいてください。


じゃあapp_dev.phpは何かというと、これは開発時に使用するファイルです。
どういう事かというと、通常アクセスするとき、
http://localhost:8001/
で接続します。

ただ、上記だとキャッシュファイルが作成されてプログラムを変更しても毎回キャッシュファイルを消す必要があります。
上記で説明したcacheディレクトリに作成されます。


そこで、Symfony2では開発モードという考えがあり、
http://localhost:8001/app_dev.php/
で接続すると、毎回キャッシュが作成されるためいちいちcacheディレクトリを消去する必要がありません。
開発時はapp_dev.phpを必ず使うもんだと思ってください。


これは、Seasar2でいうところのenvファイルを使ってut環境やct環境を制御するのをapp_dev.phpをURLに付加する事で制御しているという感じですね。この説明でも分かりにくいか。。。

  • Symofony2直下

composer.jsonというのがありますが、こればvendorディレクトリにあバンドルのバージョンを管理しているファイルです。
前回、without-vendorをダウンロードしなかったので説明しませんでしたが、
phpのComposerという機能を使ってvendorディレクトリダウンロードする事が可能です。上記で説明したバンドルの追加する方法とはこのConposerを使って追加する事です。
使い方は次回以降に説明します。


以上で簡単にディレクトリと各々のファイルの説明をしました。


次回からはSymfony2のアプリを作っていきましょう。
説明長いな。一体いつになったら終わるんだろこれ。。。