本文實例講述了php中對象引用和復制。分享給大家供大家參考,具體如下:
引用
或者
以上兩種方式,效果是一樣的??梢岳斫鉃閘inux里面的硬鏈接。
克?。\復制)
“淺復制”:被復制對象的所有變量都含有與原來的對象相同的值,而所有的對其他對象的引用都仍然指向原來的對象。也就是說,淺復制僅僅復制所考慮的對象,而不復制它所引用的對象。
深復制
$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]
參考文章:https://www.jb51.net/article/167631.htm
更多關于PHP相關內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:- PHP 引用的概念
- 詳解PHP的引用計數(shù)
- php的對象傳值與引用傳值代碼實例講解
- php傳值和傳引用的區(qū)別點總結
- php 多個變量指向同一個引用($b = &$a)用法分析
- php引用和拷貝的區(qū)別知識點總結
- PHP實現(xiàn)無限極分類的兩種方式示例【遞歸和引用方式】
- PHP中引用類型和值類型功能與用法示例
- PHP 弱引用的相關總結