リアルなケーキはもっと好きです。@kakeyangです。
以前、Smacの開発環境に関する記事で少しだけcakePHPに触れました。
今回は、cakePHPを弊社でどのように使用しているかを紹介したいと思います。

cakePHPとは?
今更説明の必要はないでしょう。公式サイトではPHPの高速開発フレームワークと謳っています。
詳細な説明は省きますが、軽量/シンプルな設計になっており、導入障壁の低いフレームワークだと思います。
DBへの簡単な登録/編集/削除処理や、ajax処理であれば、
ほとんどコードを書かずに実現できたりします。
なぜcakePHP?
弊社ではもともとシステム、及び開発部門の拡大に伴い、可搬性/保守性/可読性を目的として、フレームワークの導入を検討していました。
そのなかでも、
ということでcakePHPを導入することにしました。管理系の画面実装なんかでは、
ロジック(というか極端な話SQLのみ)だけ変更し、controllerとviewはほとんど流用出来たりしているので、
かなり開発効率は上がっていると実感しています。
cakePHPのカスタマイズ
とはいえ、cakePHPの一般的な使用法を無視して、拡張機能を利用しつつカスタマイズしている部分もあります。
コンポーネントの利用
というわけで、controllerから直接modelを操作せず、下記のように、間にcomponentを挟んでいます。

で、
hogeController.php
class hogeController( ) {
 var $components = array( 'hogeLogic' );
 function index( ){
  $this->hogeLogic->getList();
 }
的な感じでとりあえずcomponentを読んでおいて、
hogeLogicComponent.php
class hogeLogicComponent( ) {
private $_hoteModel;
 function startup(& $controller) {
  App::import('Model','hoge');
  $this->_hogeModel = new hogeModel;
}
function getList() {
return $_hogeModel->find('all');
}
}
という感じでcomponentからDBへアクセスしています。
実際にはメソッド内でSQLをゴリゴリ書いているわけですが。
では、modelはというと、
hogeModel.php
class hogeModel( ) {
public $name = 'mediaModel';    // クラス名
 public $useTable = 'HOGE';        // テーブル名
 
// 以下、validation定義
}
ちなみにvalidationの定義は、HTMLタグのIDに対して、
public $validate = array( 'hoge_name' => array( rule1' => array( rule' => array('minLength', '1'), required' => true, 'allowEmpty' => false, message' => 'ほげ名を入力してください。' ), 'rule2' => array( 'rule' => array('maxLength', '40'), 'message' => 'ほげ名は40文字以内としてください。' ) ), 'hogehoge_name' => array( 'rule1' => array( 'rule' => array('maxLength', '100'), 'message' => 'ほげほげは100文字以内としてください。' ) ) )
と、配列としてルールと、ルールに沿わなかった場合のメッセージを
定義すればOKです。すごく簡単。
とまあ結論、cakePHPいい感じです。