ログイン

symfonyでsymfuldaze

symfonyの威力を断片的に紹介。ご意見ご感想はこちらから。


戻る

symfonyをはじめるにあたって~注意点等

人間って面白いものでございまして(笑)。

元々は自分のためにと思ってローカル環境でこのサイトを作り出してきたのに、
ネットに公開したり、取引先の社長さんにwikiで紹介していただいたりしていくうちに
だんだんと初めての人向けに注意点なんかも記述しておこう、と言う気持ちになってくる。

自分もまだまだ初心者の領域なのかもしれないが少しでも長くsymfonyを使ってきた人間として、
これから始める人に伝えておきたい注意点などを下記に記載する。


どこから始めるのか


ここかな。symfony book 日本語ドキュメント

同じサイト内の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 cc」、何度口すっぱく言っても言い足りない(いや、言い足りてくれ、自分)。
「symfony clear-cache」の簡略版で、ようはキャッシュをクリアするコマンドなんだが、
このコマンドは忘れてはならない。

動作がおかしい時、自分のソースをデバッグすることはもちろん大切だが、
何時間もかけてさまよったあげく、「symfony cc」一発で解決した、と言うことが何度あったことだか。。。
基本的には設定系のソースに変更があった場合は「symfony cc」はほぼ必須。
開発中毎回毎回「symfony cc」するのはあまりにも開発効率が悪すぎるが、
大切だ、と言うことだけはどうか覚えていただきたい。

ちなみに公開サーバーでコンソール画面に入れない場合は
プロジェクト名/cache 内のファイルを全て削除すれば同じ効果が得られる。

symfony cc アプリ名 モジュール名 と打てば部分部分のキャッシュクリアも可能。


文字コードの設定とYAMLの最初の行


symfonyの文字コードはUTF-8が推奨されている。
EUC-JP等、他の文字コードではなく、UTF-8で開発する、と言うことにするとまず、何よりの大前提として、
日本語を含むファイルは必ずUTF-8で保存すること

また、テストデータ等、日本語を含むYAMLファイルも当然UTF-8で保存することになるのだが、
その際「Unicodeサイン(BOM)を付ける」と言う設定にしてしまった場合、操作中の不具合になりかねない。

BOMを付けないように設定するか、1行目に「---」と入れて2行目から通常に記述すれば不具合は回避できる。

データベースをUTF-8で作成する方法(MySQLの場合)

drop database if exists プロジェクト名;
create database プロジェクト名 default character set utf8;

symfonyでデータベースをUTF-8で操作するようにする設定

/プロジェクト名/config/databases.ymlにて

最後の行に encoding: utf8 と記述すること。ハイフンは不要。


echo'hi'; print_r($object); die();


PHPのデバッグ方法。symfony以外にも応用できることだが。

symfonyはMojaviと言うフレームワークを継承している。
Mojaviの良さも継承しているのだろうけれど、良くない点の1つとして、
プログラムに不具合があった時、error_reporting(E_ALL);にしているのにも関わらず、
PHPエラーも出さずに画面が真っ白になることがある。

私がMojaviを導入しなかった理由が実はここにあったのだが、
今となってはPHPのスキルも当時より向上したこともあってか、
symfonyに関しては下記、自分なりのデバッグ方法で何とか対処することが可能になった。

1.symfony cc
(笑)
2.プログラムを途中で止める
プログラムがどこを通るのかを把握し、各ポイントを経過しているのかを
確認するためにプログラムをそこで止める。
例えばプロジェクト名/web/index.php(もしくは アプリ名_dev.php)は必ず通っている。 2行目と3行目のところで止めていることに注目。
もし、画面をリロードして真っ白な画面の左上に「hi」と表示されていなかったら
プログラムはここすら通っていない、と言うことになる(それは恐らくありえないが)。

index.php(もしくは アプリ名_dev.php)から「・・・Success.php」までの道のりを
時には1行ずつ、時にはsymfonyソースにも潜り込みながら(好ましくはないが)、
少しずつ辿っていき、どこで不具合が起きているのかを探し当てないといけない。

echo($variable);で変数の値を出力することも可能だが
配列やオブジェクトの場合は
print_r($object);
で出力できる。次の行でdie();してプログラムを止めること。die('hi');でも良い。


たちまちは以上。また何かあれば随時足していくようにする。

戻る


コメントを投稿


※必須
<= 公開されません
 
ページの先頭へ