2013-07-01 102 views
0

我得到这个:PHP关闭类给出致命错误?

PHP Fatal error: Call to undefined method Closure::bind()

在那里我得到的错误是该行:

public function bind($signal, $callback) 
{ 

    if (!array_key_exists($signal, $this->_registry)) 
     $this->_registry[$signal] = array(); 
    $this->_registry[$signal][] = \Closure::bind($callback, null, 'static'); // here 

    return $this; 
} 

正如你可以看到我使用Closure::bind(),因为它是在manual表现。请注意,我使用\Closure::bind()(注意斜杠),因为我使用名称空间自动加载,并且需要通知自动加载器它应该查看系统名称空间。

注意

仔细查看文档中的每个类和关注每一个细节:)

+1

您使用的是哪个版本的PHP? – Martin

+1

服务器上的PHP版本是什么? – Neal

+0

版本5.3.16是在本地主机 –

回答

5

检查你的PHP版本,显然你不是> = 5.4.0!

+0

ok为什么在__construct中它说min版本是> = 5.3.0:D –

+1

闭包存在于5.3中,但方法是在5.4中添加的:] –

+0

您有要小心这样的新东西;他们喜欢在以后的更新中扩展他们的课程! –

-1

你需要检查你的PHP版本。该文件指出,该版本应该ATLEAST 5.4.0

链接: - Closure

+0

我会争辩..因为错误是该方法不存在:) –

+0

错误,方法接受第一2作为需要,第三作为可选。 –

+0

哦......是的,我明白了。我的不好;) –

2

您需要确保您的PHP版本支持该方法。
您可以使用method_exists()命令检查方法的存在。您正试图执行的方法只适用于PHP 5.4.0或更高版本!

有关检查方法存在的更多信息,请看这里:http://php.net/manual/en/function.method-exists.php

+0

为什么downvoted ?? – pattyd

+0

它不是一个函数,它是一个方法:)并且检查的正确方法是不存在函数,而是使用'new ReflectionClass(Object):: hasMethod($ methodName);' –

+0

哦,有趣的是,谢谢! – pattyd