我正在尝试构建自定义事件管理。 但是,我需要一些帮助。请检查我做的以下代码:
class A
{
public $a = array();
public function setA($value)
{
$this->a[] = $value;
}
}
class B
{
public function hook($arg)
{
$arg->setA('5');
}
public function hook2($arg)
{
$arg[] = 'my name';
}
}
$a = new A();
call_user_func_array(array(new B, 'hook'), array($a));
var_dump($a->a);
$name = array();
call_user_func_array(array(new B, 'hook2'), array($name));
var_dump($name);
这是我在我的观点上看到的:
array (size=1)
0 => string '5' (length=1)
array (size=0)
empty
您可以看到对象a已更改但数组$ name未更改。我将值传递给call_user_func_array,而不是引用。
我对此感到困惑。任何人都可以解释它是如何工作的?
非常感谢