2010-09-11 63 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語言中的首選行爲,並且比將所有內容重新分配給另一個變量時更靈活。如果需要複印,可以手動完成。