PHP轉殖物件clone

2021-06-22 16:49:17 字數 934 閱讀 8591

有的時候我們需要在乙個專案裡面,使用兩個或多個一樣的物件,如果你使用「new」關鍵字重新建立物件的話,再賦值上相同的屬性,這樣做比較煩瑣而且也容易出錯,所以要根據乙個物件完全轉殖出乙個一模一樣的物件,是非常有必要的,而且轉殖以後,兩個物件互不干擾。

class person

//這個人可以說話的方法, 說出自己的屬性

function say()

}$p1=new person("張三", "男", 20);

//使用「clone」轉殖新物件p2,和p1 物件具有相同的屬性和方法。

$p2=clone $p1;

$p2->say();

?>

php5 定義了乙個特殊的方法名「__clone()」方法,是在物件轉殖時自動呼叫的方法,用「__clone()」方法將建立乙個與原物件擁有相同屬性和方法的物件,如果想在轉殖後改變原物件的內容,需要在__clone()中重寫原本的屬性和方法,「__clone()」方法可以沒有引數,它自動包含$this 和$that 兩個指標,$this 指向複本,而$that 指向原本;

<?php

class person

//這個人可以說話的方法, 說出自己的屬性

function say()

//物件轉殖時自動呼叫的方法, 如果想在轉殖後改變原物件的內容,需要在__clone()

中重寫原本的屬性和方法

function __clone()

}$p1=new person("張三", "男", 20);

$p2=clone $p1;

$p1->say();

$p2->say();

?>

上例輸出:

我的名字叫:張三性別:男我的年齡是:20

我的名字叫:我是假的張三性別:男我的年齡是:30

php類和物件 clone 轉殖

在php5中,物件的傳遞方式預設為引用傳遞,如果我們想要在記憶體中生成兩個一樣的物件或者建立乙個物件的副本,這時可以使用 轉殖 物件的複製是通過關鍵字 clone 來實現的。用 clone 轉殖出來的物件與原物件沒有任何關係,它是把原來的物件從當前的位置重新複製了乙份,也就是相當於在記憶體中新開闢了...

JAVA 物件轉殖clone

有時候我們希望轉殖乙個已存在的物件,並對其進行操作,但是不希望改變原物件,這時使用clone技術就非常方便了。但是使用clone,也有一些需要注意的地方,因為clone有淺層轉殖和深層轉殖。還是習慣先直接上 結合 講解。注 如果你希望某個類具有clone功能,該類必須實現介面cloneable,它是...

物件的轉殖(clone)

讓物件obj1轉殖物件obj var obj var obj1 function clone origin,target clone obj,obj1 使用for.in把obj物件的每乙個屬性值提取出來並賦值給物件obj1,這就完成了轉殖。關於以上那個轉殖,為了防止使用者不傳target的形參或者是...