class foo {
public $value1 = 1;
public function setValue1(& $v) {
$this->value1 = $v;
}
}
class bar {
public $value2 = 2;
public $obj;
public function & getValue2() {
return $this->value2;
}
public function setValue2($v) {
$this->value2 = $v;
}
}
$foo = new foo();
$bar = new bar();
$bar->obj = $foo;
$foo->setValue1($bar->getValue2()); //<-- not works
//$foo->value1 =& $bar->getValue2(); //<-- works
$bar->setValue2(4);
var_dump($foo, $bar) Prints:
object(foo)[124]
public 'value1' => int 2
object(bar)[123]
public 'value2' => int 4
public 'obj' =>
object(foo)[124]
public 'value1' => int 2
为什么当我使用 $foo->setValue1($bar->getValue2()) a foo->value1 等于 2 而 bar->value2 等于 4 ?
我正在尝试使用方法而不是属性来传递引用和返回引用。