2011-11-29 68 views
4

我刚开始玩弄的Symfony 2.0,并立即遇到了一个错误:为什么我的匿名函数在Symfony 2.0中评估为NULL?

[28-Nov-2011 16:51:26] PHP Fatal error: Uncaught exception 'InvalidArgumentException' with message 'A callable is expected in AnnotationRegistry::registerLoader().'

进一步挖掘,我发现一个匿名函数获取传递到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环境之外运行了一次性脚本,并且一切正常。

$foo = function() 
{ 
    echo 'foo'; 
}; 

var_dump(gettype($foo)); 

//string(6) "object"

任何人有任何想法,为什么我看到的Symfony的环境中周围的匿名函数不同的行为?

+0

您是否认为这可能与命名空间有关?我知道他们只是因为我开始使用sf2,并且在第一次看时我遇到了很多奇怪的事情,可以在第二次看行为中解释。 – greg0ire

+0

好问题 - 我将进一步调查命名空间并查看我能找到的内容。 –

回答

0

您是否检查过配置,如Symfony docs中所述?

这应该告诉你是否缺少运行Symfony所需的任何东西

+0

加载配置页告诉我3件事,其中没有一件与此问题相关: 1.安装并启用APC等PHP加速器(强烈推荐)。 2.安装并启用intl扩展。 3.在php.ini *中设置magic_quotes_gpc关闭。 –

相关问题