gpt4 book ai didi

php - 调用闭包时的奇怪行为

转载 作者:可可西里 更新时间:2023-10-31 23:03:11 26 4
gpt4 key购买 nike

我想知道为什么这不起作用:(PHP fatal error :调用未定义的方法 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 error: syntax error, unexpected '(', expecting ',' or ';' 无效. 那么,在没有中间变量的情况下调用 y 闭包属性的正确方法是什么。

最佳答案

因为在 PHP 中,一个类可以有函数和属性,并且函数和属性可能具有相同的名称。

所以当你打电话时:

$x->y();

PHP 将在 $x 上查找名称为 y 的函数,然后调用它。你拥有的是一个属性(持有一个函数/闭包)。

这与 javascript 不同,后者的函数和属性都在同一个“命名空间”中。

关于php - 调用闭包时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33395800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com