Home > CakePHP | PHP > CakePHP DboSourceをPHP5らしく使う

CakePHP DboSourceをPHP5らしく使う

  • 2008-04-07 (月) 22:36
  • CakePHP | PHP
  • このエントリーをはてなブックマークに追加
この記事の所要時間: 044

CakePHPではDBアクセスは通常Modelを介して行うので、直接DboSourceを利用する事は無さそうですが、SQL文を自分で構築する際など、意外と使う機会があります。

DboSourceは、通常以下のよう使用します。

PHP:
  1. <?php
  2. // $hogeをエスケープ
  3. $db =& ConnectionManager::getDataSource($this->useDbConfig);
  4. $db->value($hoge);
  5. ?>

もちろんこれでも問題無いのですが、やや冗長な感じもあります。そこでPHP5で以下のように書いてみました。

PHP:
  1. <?php
  2. ConnectionManager::getDataSource($this->useDbConfig)->value($hoge);
  3. ?>

1文にまとまりました。ただ、まだ冗長なので、これをAppModelでまとめてみます。

PHP:
  1. <?php
  2. class AppModel extends Model {
  3.   public function getDbo() {
  4.     return ConnectionManager::getDataSource($this->useDbConfig);
  5.   }
  6. }
  7. ?>

使う際はこうなります。

PHP:
  1. <?php
  2. // Modelなら
  3. $this->getDbo()->value($hoge);
  4.  
  5. // Controllerなら
  6. $this->Foo->getDbo()->value($hoge);
  7. ?>

スッキリした書き方になりました;-)

そろそろPHP5も普及しつつあるので、CakePHPももっとPHP5らしい書き方に移行したいな、という話でした。

トラックバック:0

このエントリーのトラックバックURL
http://www.1x1.jp/blog/2008/04/cakephp_php5_dbosource.html/trackback
Listed below are links to weblogs that reference
CakePHP DboSourceをPHP5らしく使う from Shin x blog

Home > CakePHP | PHP > CakePHP DboSourceをPHP5らしく使う

検索
フィード
メタ情報

Return to page top