在 PHP 中有两种方法可以将信息传递给函数:
- 作为一个值(例如
false
, 48
, 'foobar'
)
- 作为对变量的引用(例如
$a
)
函数定义了它们希望如何接收参数。如果他们希望将其作为参考接收,这意味着函数对变量所做的更改将在调用函数的范围内产生影响。
如果您在函数期望引用的位置提供值,则函数将无法正确执行您期望的操作。
例如,array_splice
期望它的第一个参数是一个引用,这样您就可以获得对数组所做的修改。但是想象一下,如果你这样做:
array_splice(array('foo', 'bar'), 1);
你传入了一个值,而不是一个引用。调用您的函数的代码无法获取修改后的数组,因为array_splice
没有返回它。正确的方法是这样的:
$array = array('foo', 'bar');
array_splice($array, 1);
echo count($array); // echoes 1
这是因为array_splice
需要一个引用,因此会修改一个变量。
在你的情况下,你正在这样做:
JBPlug_do_callback('jb_init', $A=false);
据推测,JBPlug_do_callback
期望引用作为其第二个参数。您正在提供一个值(=
返回一个值)。它可能对函数的作用没有影响,但从技术上讲,它违反了 PHP 的规则。(这就是为什么它是一个“严格标准”的错误:它可能不会产生不好的影响,但它在技术上是无效的。)
你可以再次解决这个问题,只需提供 PHP 想要的:一个变量:
$A = false;
JBPlug_do_callback('jb_init', $A);