您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關怎么在php中實現對象引用和復制,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
引用
$tv2 = $tv1;
或者
$tv2 = &$tv1;
以上兩種方式,效果是一樣的。可以理解為linux里面的硬鏈接。
克隆(淺復制)
$tv2 = clone $tv1;
“淺復制”:被復制對象的所有變量都含有與原來的對象相同的值,而所有的對其他對象的引用都仍然指向原來的對象。也就是說,淺復制僅僅復制所考慮的對象,而不復制它所引用的對象。
深復制
$tv4 = unserialize(serialize($tv1));
相對于“淺復制”,當然也有一個“深復制”:被復制的對象的所有的變量都含有與原來的對象相同的值,除去那些引用其他對象的變量。也就是說,深復制把要復制的對象所引用的對象都復制了一遍。
代碼示例
<?php header("Content-type:text/html;charset=utf-8"); class TvControl{ } class Tv{ private $color; private $tvControl; function __construct(){ $this->color = "black"; $this->tvControl = new TvControl(); } function setColor($color){ $this->color = $color; } function getColor(){ return $this->color; } function getTvControl(){ return $this->tvControl; } } $tv1 = new Tv(); $tvControl1 = $tv1->getTvControl(); echo "原始類:"; var_dump($tv1); echo "<hr/>"; $tv2 = $tv1; echo "引用類:"; var_dump($tv2); echo "<hr/>"; $tv3 = clone $tv1; echo "克隆(淺復制):"; var_dump($tv3); echo "<hr/>"; $tv4 = unserialize(serialize($tv1)); echo "深復制:"; var_dump($tv4);
輸出結果:
原始類:
object(Tv)[1]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
引用類:
object(Tv)[1]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
克隆(淺復制):
object(Tv)[3]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[2]
深復制:
object(Tv)[4]
private 'color' => string 'black' (length=5)
private 'tvControl' =>
object(TvControl)[5]
上述就是小編為大家分享的怎么在php中實現對象引用和復制了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。