ことの始まり
これまでSmartyとPEARでPHPアプリを作ってきたのだけれど、独学なのでなんともMVCに自信が持てない。時間もかかってるので非効率な感じがずっとしていた。
小さいプログラムからプログラミングを始めて、データベースを扱うようになって、コードが多少複雑になり、見返すと自分のコードがスパゲティーなのにギョッとした。そこで、ふと目にしたMVCという考え方をなんとなく覚えて、できたアプリのソースがどんどん大きくなってきて、特にControllerがなぜか肥大化していることに、またギョッとする。
どうしようかと思いながらふっとフレームワークってなんだろうと思って始めてみたのがきっかけ。
なぜCakePHP?
Zend Framework SymfonyどうやらCakePHP以外で有名なのはこのあたり。CakePHPにした理由は2つ。
- 小規模な物を早く、簡単に作りたい。
- 記事が多そう。
現時点ではほんとに小規模でごく数人が使うだけのアプリを想定していること。PHPのことを検索してるとCakePHPの話題がよく目に付いたので、なんとなく参考になるものが多そうな気がした。
マニュアルって大事
結局データベース設計からやり直したけど、結果的には早く、バグの少ないものを作れている気がする。以下マニュアル読んで調べてみるまで分からなかったこと。
APPディレクトリ以外は変更を加えてはいけない。
コンソールからインストールした場合は不要ですが、まずapp_controllerとapp_modelをcoreディレクトリからコピーしてしまうこと。なんか問題が起きた時に複雑になってしまいました。
基本データの取得はFind
readとfind取得の方法があって混乱しました。以下のような記事を発見したのですが、
そう 実はおおもとのDBアクセスは findAll() なんです。。。
cakephp find findall read の違い ← Neo Inspiration
read にいたっては
read() にきたものをバラして find() に投げて
find() はそれをさらに解析して findall に投げるわけです。
いや だったら使い分けないで全部 findAll で細かく指定するよ。。。
ちなみに findcount() も findAll() してます。
findAllBy とか findBy 系はどうなんだろう。
他のとこで camelclass をばらしてるのでチョット動き違うかもしれません。
readを使うとfindの引数を細かく指定したりしないことが多く、ソースがすっきりするので、場合によって使い分けるとよいのかも。参照した記事がバージョンが古い記事なので、そういう意味でも公式のマニュアルの内容も確認しながら上記を参考にすると良いのかな、と。
今日はとりあえずここまで。