symfonyの威力を断片的に紹介。ご意見ご感想はこちらから。
意図的にaskeet!とは若干違う手順を行こうと思います。
古い部分の訂正はもちろんですが、個人的にわかりにくいところがあったり、
不要だと思われるところもあったので、自分にとってわかりやすいと思う手順で行くことにします。
まず、コンソール上でご利用の環境でのWEBのホームディレクトリに移動します。
プロジェクト名のディレクトリを作成します。
ここではsymfuldaze(Simple Daysをsymfony風にした造語)にしますが、
名前は自由につけていただいても構いません。また、askeet!のように「sfprojects」と言う
ディレクトリを作ってその中にプロジェクト名のディレクトリを作っても一向に構いません。
¥ mkdir symfuldaze
ディレクトリを作ったらそのままそのディレクトリに移動します。
symfonyでのコマンドラインからの操作は全てプロジェクト名ディレクトリ直下からになります。
¥ cd symfuldaze
ご参考までに、このディレクトリまでのパスをクリップボードにコピーしておけば
右クリックするだけでコンソールに貼り付けすることができます。
ちなみにコンソール上の文字列は反転させてEnterを押せばコピーされます。
いよいよプロジェクトを初期化します。
¥ symfony init-project symfuldaze
ズラズラと結果ステートメントが出力されますが、ここでは省略します。
エクスプローラでこのディレクトリ内を表示すればディレクトリやファイルが沢山出来ていることが確認できます。
この段階ではまだブラウザ上で何か表示されるわけではありません。とは言え、後もう1歩です。
次にアプリケーションを作成します。
プロジェクトを初期化して、アプリケーションを作成する、と言うことは
symfonyのプロジェクト= .NETで言うソリューション、symfonyのアプリケーション = .NETで言うプロジェクト、
と言うことか、と当初は思いましたが、どうやら違うようです。説明はこの後でしましょう。
¥ symfony init-app index
それではブラウザ上で確認してみましょう。
環境によってことなりますが、例えば私の環境であれば
http://localhost/symfuldaze/web/
になります。静的サンプルですが、こちらのようになります。問題なく表示されますか?
また、
http://localhost/symfuldaze/web/index_dev.php/
も確認してください。表示されますか?同じく静的サンプルですが、こちらのようになります。
http://localhost/symfuldaze/web/
での表示は公開向けの本番環境で、設定ファイル等は高速化のためにキャッシュされたモノ
(恐らくphingでビルドされたモノ?)が利用されます。
http://localhost/symfuldaze/web/index_dev.php/
での表示は開発用の環境で、プログラムを実行する度に毎回全てのファイルが再読み込みされます。
画面右上のお洒落なデバッグツールバーにも注目ください。こちらの環境では利用が可能です。
askeet!ではfrontendと言うアプリケーソンを作りましたが、こちらではindexと言う名前にしました。
何故indexにしたのか、それには理由があります。
まず、askeet!ではfrontendと言うアプリケーションを作成した後、index.phpとfrontend_dev.phpと言う2つの環境で、
前者が公開用、後者が開発用、とのことでしたが、私にとってfrontendの意味がわかりませんでした。
しかも、frontend.phpと言うファイルが何故存在しないのかもわからず、自分の中で消化しきれませんでした。
frontendは公開用のアプリケーションなのかな、と思い、では管理人画面はbackend?と思って
試しにbackendと言うアプリケーションを作成しました。
すると、web直下にbackend.phpとbackend_dev.phpと言うファイルが出来ました。
そこで私は気付いたのです。
本来ならfrontendと言うアプリケーションを作ったら
frontend.phpとfrontend_dev.phpと言うファイルが出来るべきなのですが、
どうやらプロジェクトの1つ目のアプリケーションの場合は
公開用のファイルはfrontend.phpではなくindex.phpになる、と言う規約のようです。
symfonyがApacheの一般的なDirectoryIndexに合わせて調整しているようです。
つまり、わかりやすく、1つ目のアプリケーションをindexにすれば公開用はindex.phpとなり、
開発環境はindex_dev.phpになるので、名前が統一できます。
となるとIISをお使いの方はstartと言うアプリケーション名にするべきなのでしょうか?
IISについては詳しくわかりません。
symfonyはMojaviと言うフレームワークを継承しています。私もMojaviを少し試したことがあるので
Mojaviのこを思い出せばそう言えばMojaviは全てindex.phpを呼び出しての処理だったことを思い出します。
つまり、例えば今回作成したindexと言うアプリケーションが基本的にこのプロジェクトの
唯一のアプリケーションになる、と言う認識で間違いないかと思います。
例えば管理人画面用にbackendと言うアプリケーションを作っても問題は無いと思います。
只、その場合、indexとbackendとスムーズに行き来することは出来ず、
モデルファイルとDB接続設定を共有するところ以外は設定も新たに作らないといけません。
Mojaviはindex.phpで全て処理されていた(試した程度なので実際は違うのかもしれませんが)、
と言うことを考えるとindexアプリケーション内でセキュリティをかけて管理人画面を設ける方が効率はいいかもしれません。