__clone()方法

 1 <?php
 2 class NbaPlayer{
 3     public $name;
 4 }
 5 $james = new NbaPlayer();
 6 $james->name = 'James';
 7 echo $james->name."<br/>";
 8 
 9 $james2 = clone $james;
10 echo "before set up James2's:".$james2->name."<br/>";
11 
12 $james2->name = 'James2';
13 
14 echo "James's :".$james->name."<br/>";
15 echo "James2's:".$james2->name."<br/>";

输出:

James
before set up James2's:James
James's :James
James2's:James2

 

使用clone后,james2的所有数据都是和james是一样的

这时,在 NbaPlayer 中增加

1 function __clone() {
2         $this->name="TBD";
3     }

其它代码不变,则输出为:

James
before set up James2's:TBD
James's :James
James2's:James2

也就是把clone后james2的name的初始值改为TBD,在复制时不想把原有数据的部分都复制过去,就在__clone里面改

posted @ 2015-07-04 16:10  todaytoday  阅读(224)  评论(0编辑  收藏  举报