在下面的简单示例中,我只是将数组$ x的参数一个接一个地分配给方法Cmeth。崩溃的语句应该正在执行类似Aobject-> Cmeth(“ ABC”)的操作,但是某些地方已经执行了!
<?php
class A
{
public function Cmeth($z)
{
// do something
}
}
class B
{
public function Dmeth(array $w, array $x)
{
foreach ($x as $y) {
$w[0]->$w[1]($y); // crashes with "Function name must be a string"
}
}
}
$Bobj = new B;
$u = ["ABC", "DEF"];
$w = [new A, "Cmeth"];
$Bobj->Dmeth($w, $u);
您需要括$w[1]
在{}
正确解析表达式:
$w[0]->{$w[1]}($y);
否则它将被解释为
($w[0]->$w)[1]($y)
这就是为什么它认为您的函数名称是数组而不是字符串的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句