連載第1回目ではCakePHPを抽象的に紹介しました。今回はCakePHPのフレームワークとしての機能を具体的に紹介いたします。なお、
MVCモデル
CakePHPの構造はWebアプリケーション開発で実績のあるMVCモデルを採用しています。MVCについての解説は少々長くなるのでここでは省略させていただきますが、
Cool URI
CakePHPの初期状態のURI規則は
http://example.com/コントローラー名/アクション(メソッド)名/パラメータ1/パラメータ2…
たとえば
http://example.com/users/edit/128
「アクション名がメソッド名だと、
このURI規則は
ActiveRecord
第1回でも紹介しましたが、
// すべてのユーザーの情報を取得
$users = $this->User->findAll();
// ユーザーIdを指定して1つの情報を取得
$user = $this->User->findById($user_id)
// ステータスがactiveのユーザーの情報を取得 方法1
$active_users = $this->User->findAll(array('status' => 'active'));
// ステータスがactiveのユーザーの情報を取得 方法2
$active_users = $this->User->findAllByStatus('active');
// ユーザー情報を追加
$this->User->save($new_user);
// ユーザー情報を変更
$this->User->id = $user_id;
$this->User->save($new_info);
// ユーザー情報を削除
$this->User->del($user_id);
モデルのバリデーション機能
モデルに保存できるデータの形式をあらかじめ定義しておくことで、
バリデーションの規則はCakePHPが用意した中から選ぶか、
なお、
ビューで便利なヘルパー群
CakePHPの標準のビューはピュアPHPで、
<!--$job_optionsはoption要素用の連想配列で、$user['User']['job'] は selected にしたい値-->
<?php echo $html->selectTag('User/job', $job_options, $user['User']['job']) ?>
<script type="text/javascript">
// JavaScript用に適切にエスケープする
var username = "<?php echo $javascript->escapeString($user['User']['name']) ?>";
</script>
ビューキャッシュ
CakePHPのビューキャッシュは非常に強力でシンプルなキャッシュ機構です。表示結果のHTMLをすべてキャッシュしてファイルに保存し、
ビューキャッシュは初期状態では無効になっていますので、
フィルタチェイン
CakePHPの各種フィルタは厳密にはフィルタチェインとはいえないかもしれませんが、
少々富豪的な例になりますが、
アクションチェイン
アクションとして定義したメソッドを外部から呼びたくなることがあります。そんなときは以下のように書くことで、
$usersDetail = $this->requestAction('/users/detail/' . $user_id, array('return' => true));
ネイティブ関数の短縮表記
フレームワークとしての機能とは言い難いですが、
- array(配列) => a
- array(連想配列) => aa // array assocの略
- array_
merge => am - htmlspecialchars => h
- str_
replace => r - print_
r => pr
短縮表記を使うことでタイプ量が減って画面内に表示できる情報量が増えるので、
自分で用意してもよい手法ですが、
まとめ
いかがでしたでしょうか。筆者の個人的には、
開発中の1.