CakePHPでのModelの使い方

いまやってるプロジェクトはPHP5.3+CakePHP1.3でやってるんだけど,ひさしぶりにいちからCakePHPを使って開発したので,自分なりのModelの使い方に関してメモ書きしておきます.たいしたことはやってないんですが,最低限のことを心がけるだけで仕様変更に強くテストを書きやすいModelができあがります

1. テーブルに1対1で対応するテーブル用Modelを作る

アクセスするには必要なんで作ると思います

2. Controllerと対応するModelを作る

$useTable = falseを指定して,DBに直接アクセスしないでテーブル用Modelを中で呼び出すようにしている.名前にはapiとか付けてます.controllerのactionに対応するメソッドをこのAPIModelにも作ります.controllerのactionと同じ名前か一定の法則に基づいておくと呼び出す処理がわかりやすいです.ロジックが複雑になるようならactionごとにAPIModelを作るのもありだと思います

単一のテーブルへの処理のvalidateはテーブル用Modelに書くんですが,validateするときに,同じテーブルにたいして複数の条件があったり,複数のテーブルに対する処理のときは使いにくいので,このAPIModelに書いてます.そのときでもテーブル用Modelにもちゃんとスキーマに応じたvalidateを書くことを心がけてます

      • -

本当はvendorとかに素のPHPで書いたロジックを書いて,それを呼び出す形にすると良いと思ったんだけどCakeを使っている意味がなさそうなのでやめました.適材適所です

CakeのModelの使い方に関してはCakePHP Modelとの付き合い方(CakePHP Advent Calendar 2010 3日目) - Shin x blogがとても参考になるのでぜひ

cakeはクセはありますがフレームワーク中の処理を追いやすく(とっても読みやすいコードです),array関係の関数を駆使して書かれておりPHPの勉強にもなるフレームワークです.しばらくcakeを使うこともなさそうなので書いてみました