调用call_user_func_array后,PHP对象发生了变化,但变量不是

时间:2016-04-09 11:48:28

标签: php variables reference

我正在尝试构建自定义事件管理。 但是,我需要一些帮助。请检查我做的以下代码:

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,而不是引用。

我对此感到困惑。任何人都可以解释它是如何工作的?

非常感谢

0 个答案:

没有答案