Modelを全く扱わないControllerの中で明示的にConnectionManager::getDataSource()で "Fatal error: Class‘ConnectionManager’ not found"エラー発生。
ついに根負けしてCakePHPタグを作ってしまった・・・。
えっと、つまり
<?php class HogeController extends AppController { /* * デフォルトのfalseだと、"Missing Model"というエラーになる。 */ var $uses = array(); }
としていて、そこにindexアクションを追加したわけです。で、手動でSQLを呼びたかったし何よりもgetDataSource()で返されるオブジェクト参照の中身が気になったので、
function index() { $db =& ConnectionManager::getDataSource(getenv('CAKE_ENV')); var_dump($db); }
と追加してみたのですよ、奥様。そしたら。
Fatal error: Class 'ConnectionManager' not found in .../hoge_controller.php on line XX
まぁ、そりゃ、DB関係全く呼んでないからそれもそうだよなぁ・・・までは良いのですが。で、どう解決すんの?これ。
まぁ手動でrequire_onceすりゃそれでおしまいなのは当たり前なのですが、いかんせん、フレームワーク側で絶対に何らかの罠、じゃなかったI/Fが用意されている筈なんです。symfonyやCakePHPの場合は。で、調べたところ
model_php4.php : uses('class_registry', 'validators', 'model' . DS . 'connection_manager', 'set');
という一文が見つかりました。というわけで、uses()の中身も確認した上で、
uses('model' . DS . 'connection_manager');
をindex()の中に仕込んで(近いうちに多分AppControllerに移すと思う)、解決。
で結局、返されるオブジェクトは今回はMySQLを使っていたので DboMysqlでした。つまり、cake/libs/model/dbo/dbo_mysql.php の中のクラスのオブジェクトですね。
・・・疲れた。(;´ρ`)