この記事の所要時間: 約 0分44秒
CakePHPではDBアクセスは通常Modelを介して行うので、直接DboSourceを利用する事は無さそうですが、SQL文を自分で構築する際など、意外と使う機会があります。
DboSourceは、通常以下のよう使用します。
PHP:
-
<?php
-
// $hogeをエスケープ
-
$db =& ConnectionManager::getDataSource($this->useDbConfig);
-
$db->value($hoge);
-
?>
もちろんこれでも問題無いのですが、やや冗長な感じもあります。そこでPHP5で以下のように書いてみました。
PHP:
-
<?php
-
ConnectionManager::getDataSource($this->useDbConfig)->value($hoge);
-
?>
1文にまとまりました。ただ、まだ冗長なので、これをAppModelでまとめてみます。
PHP:
-
<?php
-
class AppModel extends Model {
-
public function getDbo() {
-
return ConnectionManager::getDataSource($this->useDbConfig);
-
}
-
}
-
?>
使う際はこうなります。
PHP:
-
<?php
-
// Modelなら
-
$this->getDbo()->value($hoge);
-
-
// Controllerなら
-
$this->Foo->getDbo()->value($hoge);
-
?>
スッキリした書き方になりました;-)
そろそろ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
