__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里面改