如果我将一个对象传递给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
}
答案 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;
}