1

错误首先出现在调用JB_do_house_keeping(). 每次请求都会调用此函数!

JBPlug_do_callback('jb_init', $A=false);  // **ERROR HERE**

define ('JB_INIT_COMPLETED', true);

=================================

然后还有JB_save_session()

JBPLUG_do_callback('house_keeping_critical_section', $A = false); // **ERROR HERE**

请帮忙!我被困在这里:我是一个尝试新事物的基本编码器......

4

1 回答 1

2

在 PHP 中有两种方法可以将信息传递给函数:

函数定义了它们希望如何接收参数。如果他们希望将其作为参考接收,这意味着函数对变量所做的更改将在调用函数的范围内产生影响。

如果您在函数期望引用的位置提供值,则函数将无法正确执行您期望的操作。

例如,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); 
于 2013-11-07T06:44:55.603 回答