我写了一些代码:
class A {
private $x = 1;
private $y = "z";
public function setX($x){
$this->x = $x;
}
public function getX(){
return $this->x;
}
}
$a1 = new A();
$a1->setX(2);
echo $a1->getX();
$a2 = $a1;
$a2->setX(666);
echo $a1->getX();
我有输出:
2
666
但我只为对象$ a2设置值“666”。
为什么$ a1的价值也改变了?
(操作系统:Ubuntu 10.04,PHP 5.3.2-1)
答案 0 :(得分:1)
通过引用传递对象,而不是通过值传递的数组。这是oop语言中的首选行为,并且比重新分配给另一个变量时复制所有内容要灵活得多。如果需要,可以手动完成复制。
答案 1 :(得分:0)
$a2 = new A();
您需要创建类的新对象。