如何将值重新分配给传递给函数的php对象

时间:2017-09-14 10:22:07

标签: php

如果我将一个对象传递给PHP中的一个函数,它将通过引用传递,如果我将该对象设置为一个新对象,它就不会“粘住”。如何将新对象分配给传入的对象,最好不要迭代所有属性?

e.g:

function Foo($obj)
{
    // do stuff and create new obj
    $obj = $newObj;

    // upon function exit, the original $obj value is as it was
}

2 个答案:

答案 0 :(得分:2)

  

如果我将一个对象传递给PHP中的一个函数,它将通过引用传递

在PHP中,对象通过“指针值”传递,例如指向对象的指针被复制到函数参数中:

function test($arg) {
    $arg = new stdClass();
}

$a = new stdClass();
$a->property = '123';
test($a);

var_dump($a->property); // "123"

要通过指针引用传递,请在参数前加上&符号:

function test(&$arg) {
    $arg = new stdClass();
}

$a = new stdClass();
$a->property = '123';
test($a);

var_dump($a->property); // Undefined property

但是你应该避免指针引用,因为它们往往会混淆而只是返回新对象:

function test($arg) {
    return new stdClass();
}

答案 1 :(得分:0)

也许您需要返回新值,然后才能访问新值:

function Foo($obj)
{
    // do stuff and create new obj
    $obj = $newObj;

    // upon function exit, the original $obj value is as it was
    return $obj; 
}