この記事の所要時間: 約 0分44秒
CakePHPではDBアクセスは通常Modelを介して行うので、直接DboSourceを利用する事は無さそうですが、SQL文を自分で構築する際など、意外と使う機会があります。
DboSourceは、通常以下のよう使用します。
<?php // $hogeをエスケープ $db =& ConnectionManager::getDataSource($this->useDbConfig); $db->value($hoge); ?>
もちろんこれでも問題無いのですが、やや冗長な感じもあります。そこでPHP5で以下のように書いてみました。
<?php ConnectionManager::getDataSource($this->useDbConfig)->value($hoge); ?>
1文にまとまりました。ただ、まだ冗長なので、これをAppModelでまとめてみます。
<?php class AppModel extends Model { public function getDbo() { return ConnectionManager::getDataSource($this->useDbConfig); } } ?>
使う際はこうなります。
<?php // Modelなら $this->getDbo()->value($hoge); // Controllerなら $this->Foo->getDbo()->value($hoge); ?>
スッキリした書き方になりました;-)
そろそろPHP5も普及しつつあるので、CakePHPももっとPHP5らしい書き方に移行したいな、という話でした。
トラックバック:1
- このエントリーのトラックバックURL
- /blog/2008/04/cakephp_php5_dbosource.html/trackback
- Listed below are links to weblogs that reference
- CakePHP DboSourceをPHP5らしく使う from Shin x blog
- pingback from (CakePHP 2.x) mysqldumpを使ってバックアップを作成する | 日々の覚書…日常のことも少しだけ 13-12-05 (木) 8:02
-
[…] ドされます。 本当はShell化して cronとかで自動バックアップ取ったりした方がいいかもしれないですが、 とりあえず、この方法を取ってみました。 (参考) CakePHP DboSourceをPHP5らしく使う […]