Dream of Electric Sheep

WEBやプログラムの忘備録

CakePHPをちょっと触ってみて

なかなかブログの更新できてません(汗)

勉強中のCakePHPで、複数のテーブル絡めた簡単なサンプルアプリを作ってみるあたりまでは出来ました。まだまだ勉強中なのですが、小規模なWEBアプリを組むのにはなかなか面白いなあ、と思いました。反面、もともと自分がメインで扱ってたJavaと考え方が異なるところも結構あって、なじみがないというか、不慣れというか、そんな面も結構ありました。

例えば、CakePHPはControllerとviewでのデータの受け渡しに連想配列を使いますが、Javaでは基本的にデータの受け渡しにはオブジェクトを使用していたので、ちょっと違和感を感じました。PHPではもともとオブジェクト指向言語じゃなかったので、PHP文化圏では連想配列の方がなじみやすいのかもしれませんが。

あとViewがタグだけで記述できないので、ロジックの分離がうまく出来ない場合もあるのかなと思いました。これは書き手(プログラマ)による部分大きいと思いますが。CakePHPでヘルパーというViewのための機能が用意されていますが、記述方法がPHPの書き方そのままです。一方、Javaの代表的(だった)MVCフレームワークStrutsでは、表示に必要なデータや、繰り返し処理等のロジックをタグ形式で書くことが出来ます。Viewではこのタグのみで記述を行えば本来ControllerでやるべきロジックをViewから完全に排除できます。HTMLタグとJavaプログラミング以外にStrutsのタグ(正確にはStruts用に作られたJSPのカスタムタグ)の使い方を覚える必要があるため学習コストは高くなるのでどちらがいいか判断は分かれると思いますが、個人的にはStrutsの考え方はなかなか優秀だったと思います。

CakePHPのModelはなかなか優秀なORマッパーだと思いました。ただ、複雑な処理を行うとき、SQLを直接発行したりトランザクションを管理したりできるのかな?と思いました。現在勉強に使っている参考書にはそれらにまったく触れてません。しかしネットで検索してみるとどちらもCakePHPで対応しているみたいです。時間のあるときにそちらのほうも調べてみたいと思います。また、CakePHPでの標準的な手法がどうなのか(SQLトランザクションを使わないのが普通なのかそうじゃないのか)が気になります。

せっかくなのでCakePHPで勉強した内容をメモとしてブログに残したいなあと思ってます。しかしなかなか時間が…