我想知道为什么这不起作用:(PHP致命错误:调用未定义的方法stdClass :: y())
$x=new stdClass;
$x->y=function(){return 'hi';};
echo $x->y();
但这有效:
$x=new stdClass;
$x->y=function(){return 'hi';};
$y=$x->y;
echo $y();
echo($x-> y)();还返回Parse错误:语法错误,意外'(‘,期待’,’或’;’无效.那么,在没有中间变量的情况下调用y闭包属性的正确方法是什么.
解决方法:
因为在PHP中,类可以具有函数和属性,并且函数和属性可以具有相同的名称.
所以当你打电话时:
$x->y();
PHP将在$x上查找名为y的函数,然后调用它.你拥有的是一个属性(它包含一个函数/闭包).
这与javascript不同,其中函数和属性都在同一个“命名空间”中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。