2010-09-11 147 views
1

我写一些代码:为什么PHP类克隆

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 

但我设定值 “666” 只为对象$ A2。

为什么$ a1中的值也改变了?

(OS:Ubuntu的10.04,PHP 5.3.2-1)

回答

0
$a2 = new A(); 

您需要创建类的新对象。

1

对象通过引用传递,与通过值传递的数组形成对比。这是oop语言中的首选行为,并且比将所有内容重新分配给另一个变量时更灵活。如果需要复印,可以手动完成。