連載第1回目ではCakePHPを抽象的に紹介しました。今回はCakePHPのフレームワークとしての機能を具体的に紹介いたします。なお、
MVCモデル
CakePHPの構造はWebアプリケーション開発で実績のあるMVCモデルを採用しています。MVCについての解説は少々長くなるのでここでは省略させていただきますが、
Cool URI
CakePHPの初期状態のURI規則は たとえば 「アクション名がメソッド名だと、 このURI規則は 第1回でも紹介しましたが、 モデルに保存できるデータの形式をあらかじめ定義しておくことで、 バリデーションの規則はCakePHPが用意した中から選ぶか、 なお、 CakePHPの標準のビューはピュアPHPで、 CakePHPのビューキャッシュは非常に強力でシンプルなキャッシュ機構です。表示結果のHTMLをすべてキャッシュしてファイルに保存し、 ビューキャッシュは初期状態では無効になっていますので、 CakePHPの各種フィルタは厳密にはフィルタチェインとはいえないかもしれませんが、 少々富豪的な例になりますが、 アクションとして定義したメソッドを外部から呼びたくなることがあります。そんなときは以下のように書くことで、 フレームワークとしての機能とは言い難いですが、 短縮表記を使うことでタイプ量が減って画面内に表示できる情報量が増えるので、 自分で用意してもよい手法ですが、 いかがでしたでしょうか。筆者の個人的には、 開発中の1.
http://
http://example.com/users/edit/128
ActiveRecord
// すべてのユーザーの情報を取得
$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);
モデルのバリデーション機能
ビューで便利なヘルパー群
<!--$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>
ビューキャッシュ
フィルタチェイン
アクションチェイン
$usersDetail = $this->requestAction('/users/detail/' . $user_id, array('return' => true));
ネイティブ関数の短縮表記
まとめ