Zend Frameworkおよびロゴは登録商標です。
Zend Frameworkを使い始めました。
いちいちファイルをrequire_onceするのは面倒なので、Autoloaderを使います。
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);
また、Zend_Db_Tableのfindがrowsetを返すのが気にくわないため、findOne()
を実装することにします。
class App_Db_Table extends Zend_Db_Table_Abstract
{
public function findOne()
{
$args = func_get_args();
$result = call_user_func_array(array($this, 'parent::find'), $args);
return $result->current();
}
}
parentのfindを呼ぶとき、
call_user_func_array(array('parent', 'find'), $args);
とすると、E_STRICTなPHP5では、staticでない関数をstaticに呼び出したと言われてエラーになります。
なので、このように
call_user_func_array(array($this, 'parent::find'), $args);
と呼び出すわけですが、Zend_Loaderがあまり賢くないので、parent::
を見てparent.phpを探しに行ってしまいます。
Warning: include(parent.php) [function.include]: failed to open stream: No such file or directory in ...
Zendのフォーラムでも同じ症状の人がいましたが、これという解決案は見つからないみたいなので、Zend/Loader.php:83行目
include $file
を
@include $file
に変えてめでたしめでたし。
なんだかなぁ。