PHP5中定義了一個特殊的方法名“clone()”方法,是在對象複製時自動調用的方法,用“clone()”方法將建立一個與原對象擁有相同屬性和方法的對象,如果想在複製後改變原對象的內容,需要在clone()中重寫原本的屬性和方法,“clone()”方法可以沒有參數,它自動包含$this和$that兩個指標,$this指向複本,而$that指向原本,具體執行個體如下:
<?phpclass Person { // 下面是人的成員屬性 var $name; // 人的名字 var $sex; // 人的性別 var $age; // 人的年齡 // 定義一個構造方法參數為屬性姓名$name、性別$sex 和年齡$age 進行賦值 // function construct($name="", $sex="",$age="") function construct($name, $sex, $age) { $this->name = $name; $this->sex = $sex; $this->age = $age; } // 這個人可以說話的方法, 說出自己的屬性 function say() { echo "我的名字叫:" . $this->name . " 性別:" . $this->sex . " 我的年齡是:" . $this ->age . "<br>"; } // 對象複製時自動調用的方法, 如果想在複製後改變原對象的內容,需要在clone()中重寫原來的屬性和方法。 function clone() { // $this 指的複本p2, 而$that 是指向原本p1,這樣就在本方法裡,改變了複本的屬性。 $this->name = "我是複製的張三$that->name"; // $this->age = 30; }}$p1 = new Person ( "張三", "男", 20 );$p2 = clone $p1;$p1->say ();$p2->say ();?>
成功運行此PHP程式後的結果如下:
我的名字叫:張三 性別:男 我的年齡是:20
我的名字叫:我是複製的張三 性別:男 我的年齡是:20