我确实看到this问题,但它没有完全回答我的问题。
如果我这样做:
$obj1 = new ObjectOne();
然后这个:
$obj2 = new ObjectTwo($obj1);
$obj2->someFunction();
someFunction()
修改传递给它的对象的属性,$obj1
和$obj2->passedInObject
是否都会更新?
答案 0 :(得分:4)
我尝试了以下代码,它按预期工作。 MyObject
中的var在原始对象中递增。
<?php
class MyObject {
public $var;
}
class MyObjectTwo {
public $objVar;
function __construct($aObj1) {
$this->objVar = $aObj1;
}
public function someFunction() {
$this->objVar->var++;
}
}
$obj1 = new MyObject();
$obj1->var = 5; // Originally set to 5
$obj2 = new MyObjectTwo($obj1);
$obj2->someFunction();
echo $obj1->var; // Prints 6