PHP闭包类给出了致命错误?
我明白了: PHP致命错误:调用未定义的方法Closure::bind() 我得到错误的那一行是:PHP闭包类给出了致命错误?,php,closures,Php,Closures,我明白了: PHP致命错误:调用未定义的方法Closure::bind() 我得到错误的那一行是: public function bind($signal, $callback) { if (!array_key_exists($signal, $this->_registry)) $this->_registry[$signal] = array(); $this->_registry[$signal][] = \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()
。请注意,我使用的是\Closure::bind()
(请注意斜杠),因为我使用了名称空间自动加载,需要通知自动加载程序它应该查看系统名称空间
注意
仔细查看文档中的每个类并注意每个细节:)您需要检查您的PHP版本。文档中规定,该版本应至少为5.4.0
链接:-您需要检查您的PHP版本。文档中规定,该版本应至少为5.4.0
链接:-检查您的php版本,显然您不在>=5.4.0上 检查您的php版本,显然您不在>=5.4.0上 您需要确保您的PHP版本支持该方法。
您可以使用
method\u exists()
命令检查方法是否存在。您尝试执行的方法仅适用于PHP5.4.0或更高版本有关检查方法存在性的更多信息,请查看此处:您需要确保PHP版本支持该方法。
您可以使用
method\u exists()
命令检查方法存在性。您尝试执行的方法仅适用于PHP5.4.0或更高版本有关检查方法存在性的更多信息,请查看此处:您使用的是什么版本的PHP?您的服务器上有什么版本的PHP?服务器上有5.3.16版localhost@DaGhostmanDimitrov当前位置你的问题就在那里!你需要5.4版本才能工作。请看我的答案:]你使用的是什么版本的PHP?你的服务器上有什么版本的PHP?服务器上有5.3.16版本localhost@DaGhostmanDimitrov当前位置你的问题就在那里!你需要5.4才能做到这一点。看我的答案:]我会争辩。。因为错误是方法不存在:)哦。。。是的,我知道了。我的错;)@维韦克:可能会添加一个文档链接。:-)我认为。。因为错误是方法不存在:)哦。。。是的,我知道了。我的错;)@维韦克:可能会添加一个文档链接。:-)好吧,为什么在_构造中说min版本>=5.3.0:DClosures存在于5.3中,但方法是在5.4中添加的:]你必须小心处理像这样的新东西;他们喜欢在以后的更新中扩展他们的类!ty用于清除:D和快速响应所有:)Yh我只是在看构造器。。。并且认为整个类都在那里:Dok为什么在_构造中它说min版本>=5.3.0:DClosures存在于5.3中,但是方法是在5.4中添加的:]你必须小心处理像这样的新东西;他们喜欢在以后的更新中扩展他们的类!ty用于清除:D和快速响应所有:)Yh我只是在看构造器。。。并且认为整个类都存在:Dit不是一个函数,而是一个方法:),正确的检查方法不是使用函数exists,而是使用
新的ReflectionClass(Object)::hasMethod($methodName)
yh+1更简单的方法:Dit不是一个函数,而是一个方法:),正确的检查方法不是使用函数exists,而是使用newreflectionclass(Object)::hasMethod($methodName)代码>yh+1以获得更简单的方式:D