Symfony 2.0 をいじり始めたところ、すぐにエラーが発生しました。
[2011 年 11 月 28 日 16:51:26] PHP の致命的なエラー: メッセージ「AnnotationRegistry::registerLoader() で callable が必要です」というメッセージを含むキャッチされない例外「InvalidArgumentException」
さらに深く掘り下げると、無名関数が関数に渡されていることがわかりましたregisterLoader
。
$callable = function($class) use ($loader)
{
$loader->loadClass($class);
return class_exists($class, false);
};
AnnotationRegistry::registerLoader($callable);
いいですね。安全のために、小切手を入れました:
var_dump(gettype($callable));
これは NULL を返しましたが、これは明らかに呼び出し可能ではありません。私はPHP 5.3.2にアップグレードしたばかりで、それによると、phpversion()
使用されているバージョンです。
Symfony 環境の外で 1 回限りのスクリプトを実行したところ、すべてが正しく動作しました。
$foo = function()
{
echo 'foo';
};
var_dump(gettype($foo));
//string(6) "オブジェクト"
Symfony 環境内の無名関数に関して異なる動作が見られる理由について、何か考えがある人はいますか?