リアルなケーキはもっと好きです。@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いい感じです。