symfonyの威力を断片的に紹介。ご意見ご感想はこちらから。
人間って面白いものでございまして(笑)。
元々は自分のためにと思ってローカル環境でこのサイトを作り出してきたのに、
ネットに公開したり、取引先の社長さんにwikiで紹介していただいたりしていくうちに
だんだんと初めての人向けに注意点なんかも記述しておこう、と言う気持ちになってくる。
自分もまだまだ初心者の領域なのかもしれないが少しでも長くsymfonyを使ってきた人間として、
これから始める人に伝えておきたい注意点などを下記に記載する。
同じサイト内のsymfony book 日本語ドキュメント symfony のインストールで
symfonyをインストールする手順が優しく述べられている。
あまりにも有名なaskeet!先生が今のところ一番いいのかもしれない。
1日目はsymfonyのインストールから始まるのでここから始める、と言う方法もありかも。
5日目以降の日本語訳はこちら。
24日目までを一気に駆け抜けようと急いでしまった自分として(しかも8日目までしかやっていない)、
振り返って思うのは急がずに7日目までを別のテーブルやモジュール、アクションを作って
少しずつ内容を変えてプログラムを実行したりしてsymfonyに慣れ、
実践に応用することを心掛けながら取り組むべきだったと。orz
8日目以降はリファレンス程度で充分ではないかと思う。
後、1日目のApacheのhttp.confの設定の話は要らないように個人的に思う。
http://localhost/askeet/web/でチュートリアルすればいいじゃないかと。
Apacheのチュートリアルではないんだし。
どちらにせよsymfonyの威力を手順を追って体感できるチュートリアルサイトとして、
たちまちはここが定番ではないかと思う。
もう1つ重要なことを伝えそびれていた。askeet!の情報は少し古い。
古いバージョンのメソッドや古い手法も紹介されていて、不具合を調べてみると
ここの情報が古いことが原因だったりする。となるとやはり新たな定番が必要なのかもしれない。
勉強していくうちにどこかで覚えるコンソール上のコマンド「symfony cc」。
聖なる「symfony cc」、何度口すっぱく言っても言い足りない(いや、言い足りてくれ、自分)。
「symfony clear-cache」の簡略版で、ようはキャッシュをクリアするコマンドなんだが、
このコマンドは忘れてはならない。
動作がおかしい時、自分のソースをデバッグすることはもちろん大切だが、
何時間もかけてさまよったあげく、「symfony cc」一発で解決した、と言うことが何度あったことだか。。。
基本的には設定系のソースに変更があった場合は「symfony cc」はほぼ必須。
開発中毎回毎回「symfony cc」するのはあまりにも開発効率が悪すぎるが、
大切だ、と言うことだけはどうか覚えていただきたい。
ちなみに公開サーバーでコンソール画面に入れない場合は
プロジェクト名/cache 内のファイルを全て削除すれば同じ効果が得られる。
symfony cc アプリ名 モジュール名 と打てば部分部分のキャッシュクリアも可能。
symfonyの文字コードはUTF-8が推奨されている。
EUC-JP等、他の文字コードではなく、UTF-8で開発する、と言うことにするとまず、何よりの大前提として、
日本語を含むファイルは必ずUTF-8で保存すること
また、テストデータ等、日本語を含むYAMLファイルも当然UTF-8で保存することになるのだが、
その際「Unicodeサイン(BOM)を付ける」と言う設定にしてしまった場合、操作中の不具合になりかねない。
BOMを付けないように設定するか、1行目に「---」と入れて2行目から通常に記述すれば不具合は回避できる。
データベースをUTF-8で作成する方法(MySQLの場合)
symfonyでデータベースをUTF-8で操作するようにする設定
/プロジェクト名/config/databases.ymlにて
最後の行に encoding: utf8 と記述すること。ハイフンは不要。
PHPのデバッグ方法。symfony以外にも応用できることだが。
symfonyはMojaviと言うフレームワークを継承している。
Mojaviの良さも継承しているのだろうけれど、良くない点の1つとして、
プログラムに不具合があった時、error_reporting(E_ALL);にしているのにも関わらず、
PHPエラーも出さずに画面が真っ白になることがある。
私がMojaviを導入しなかった理由が実はここにあったのだが、
今となってはPHPのスキルも当時より向上したこともあってか、
symfonyに関しては下記、自分なりのデバッグ方法で何とか対処することが可能になった。