php物件轉殖

2022-02-24 13:13:29 字數 1146 閱讀 1247

思考:物件只能通過例項化產生,而且即便是將物件複製給變數,得到的還是同乙個物件,如果有的時候需要得到新的物件,除了例項化之外還有其他辦法?

引入:物件理論上應該通過例項化來產生,這是物件產生的根本,但是有時候如果想在已有的物件上產生乙個新的物件,可以通過轉殖來實現。

定義:轉殖物件clone,即通過已有的物件複製乙個新的同樣物件,但是兩者之間並非用乙個物件。

1.物件轉殖是通過clone關鍵字實現,即clone 物件

<?php

class

student

//例項化

$s1=new

student();

echo

$s1->age; //

輸出32

//clone

$s2= clone

$s1;

echo

$s2->age; //

返回32

echo '';

//新物件age屬性重新賦值

$s2->age=77;

echo

$s1->age; //

32echo

$s2->age; //

77 並不是同乙個物件。

?>

2.物件在例項化的時候會自動呼叫存在的構造方法__construct(),同樣的,在類的內部,php允許定義乙個__clone的方法,在物件被轉殖後,新轉殖出來的物件會自動呼叫

<?php

class

student

}$s1=new

student();

$s2=clone

$s1;

echo

$s2->age; //

輸出33 並且var_dump()也輸出了

?>

3.如果不允許物件被轉殖,可以將__clone()方法私有化(本質四不允許物件在外部被轉殖)

<?php

class

student

}?>

總結:1.物件可以通過轉殖來得到新的物件(以前只能例項化)

2.轉殖出來的物件會自動呼叫類中對應的__clone()方法(如果有該方法的話)

3.可以通過私有化來實現禁止外部物件轉殖

php物件轉殖

created by phpstorm.user tusi date 2017 8 25 time 10 21 class subobject 建構函式,每例項化物件一次,將公有屬性 instance值加1 public function clone 物件複製函式,如果物件中定義了 clone方法,...

PHP轉殖物件clone

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

php物件導向之轉殖物件

在前面的php物件導向之物件和引用,我們試圖以 b a 的方式複製物件以傳遞物件的值 內容 結果卻是傳遞物件的位址,在結尾為了解決複製物件這個問題,提到了轉殖的方法。接下來講一下php物件導向之轉殖物件。前面我們已經知道,使用傳址引用的方式呼叫物件,實質呼叫的是同乙個物件,有時需要建設立乙個物件的副...