Modelの使い方
開発環境:CakePHP2.5.1
Modelはどんどん詰め込みすぎていくとメンテナンスし難い状態になってしまいます。
ではどのようにしたら良いのか。それに対する一つのアイデアとしてShinbaraさんが書いているCakePHP Modelとの付き合い方がとても参考になります。
5項目の中で、ここで紹介する2つが特にお気に入りです。
アソシエーションを使わずにビューを使う
CakePHPを覚えていく時に一つの壁となるのが、アソシエーション。
理解してしまえばとても便利な機能で、複雑なことも対応できるので、どんどん活用してしまいます。
複雑なことをすればするほど、追加や修正がやりにくくなっていきます。
そうならないためにも、そもそもアソシエーションを使わないという考え方です。
欲しいSQLのビューを用意し、単純にそれを呼び出すだけにする。
こうすることで、コードが格段に読みやすくなります。
アクションごとにModelを分割
通常Modelはテーブル単位で作ることが多いですが、そうすると、Modelが肥大化し、メンテナンスがし難くなります。
それを回避するために、アクションごとにModelを分けるという方法です。
/posts/indexというURLならPostsIndexというModel、/posts/addというURLならPostsAddというModelを作る。
Modelの数は多くなりますが、各ファイル内はすっきりしますので、開発はしやすくなります。
単一責任の原則でModelを分割
上記のようにアクションごとに分けることで、かなりすっきりさせることができますが、単一アクション内でも様々な処理があったりすると煩雑になりバグが潜む可能性が増えてしまいます。
そこで、単一責任の原則(SRP=Single Responsibility Principle)に基づき、単一モデルに一つの責任だけを持たせる。こうすることで、モデルの数は増えますが、各モデルは単一機能に限られるので、とてもわかり易くなります。