澳门新浦京8455com第五节–克隆

PHP5中的对象模型通过引用来调用对象,
但一时你恐怕想创设多个指标的别本,并愿意原本的指标的退换不影响到别本 .
为了那样的指标,PHP定义了一个奇特的法门,称为__clone.
像__construct和__destruct相符,前边有三个下划线.私下认可地,用__clone方法将构建贰个与原对象具有同等属性和办法的对象.
要是你想在仿制时退换私下认可的内容,你要在__clone中覆写(属性或艺术卡塔尔国.克隆的方法能够未有参数,但它同一时间含有this和that指针(that指向被复制的目的State of Qatar.
如若您选拔克隆本人,你要小心复制任何你要你的对象包括的新闻,从that到this.
若是您用__澳门新浦京8455com ,clone来复制. PHP不会进行此外隐性的复制,
上面展现了一个用一种类序数来自动化对象的例证: ?php class ObjectTracker
file://对象追踪器 { private static $nextSerial = 0; private $id; private
$name; function __construct($name卡塔尔(قطر‎ file://构造函数 { $this-name =
$name; $this-id = ++self::$nextSerial; } function __clone(卡塔尔国file://克隆 { $this-name = “Clone of $that-name”; $this-id =
++self::$nextSerial; } function getId(State of Qatar file://获取id属性的值 {
return($this-id卡塔尔国; } function getName(卡塔尔 file://获取name属性的值 {
return($this-nameState of Qatar; } } $ot = new ObjectTracker(“Zeev’s Object”卡塔尔国; $ot2 =
$ot-__clone(); //输出: 1 Zeev’s Object print($ot-getId() . ” ” .
$ot-getName() . “br”); //输出: 2 Clone of Zeev’s Object
print($ot2-getId() . ” ” . $ot2-getName() . “br”); ?

/*
+——————————————————————————-+
| = 本文为Haohappy读<> 
| = 中Classes and Objects一章的笔记 
| = 翻译为主+个人心得 
| = 为防止恐怕发生的不必要的劳动请勿转发,多谢 
| = 接待研讨指正,希望和持有PHP爱好者合营进步! 
| = PHP5研讨为主: 
+——————————————————————————-+
*/

第五节–克隆

PHP第55中学的对象模型通过引用来调用对象, 但有时你或然想建构二个指标的别本,并期望原来的靶子的改观不影响到别本 . 为了这样的目标,PHP定义了一个非凡的章程,称为__clone. 像__construct和__destruct相似,前边有多个下划线.

默认地,用__clone方法将确立三个与原对象具有同等属性和方法的对象. 要是你想在仿制时退换默许的剧情,你要在__clone中覆写(属性或方法卡塔尔.

仿造的方法能够未有参数,但它同期含有this和that指针(that指向被复制的目的State of Qatar. 假如您接收克隆自个儿,你要小心复制任何你要你的对象包含的音信,从that到this. 如若您用__clone来复制. PHP不会实践其余隐性的复制, 

上边展现了叁个用接二连三串序数来自动化对象的事例:

复制代码
代码如下:   class ObjectTracker //对象追踪器  
   {  
       private static $nextSerial = 0;  
       private $id;  
       private $name;  

       function __construct($name卡塔尔国 //布局函数  
       {  
           $this->name = $name;  
           $this->id = ++self::$nextSerial;  
       }  

       function __clone()  //克隆  
       {  
           $this->name = “Clone of $that->name”;  
           $this->id = ++self::$nextSerial;  
       }  

       function getId(卡塔尔 //获取id属性的值  
       {  
           return($this->id);  
       }  

       function getName(卡塔尔国 //获取name属性的值  
       {  
           return($this->name);  
       }  
   }  

   $ot = new ObjectTracker(“Zeev’s Object”);  
   $ot2 = $ot->__clone();  

   //输出: 1 Zeev’s Object  
   print($ot->getId() . ” ” . $ot->getName() . “
“);  

   //输出: 2 Clone of Zeev’s Object  
   print($ot2->getId() . ” ” . $ot2->getName() . “
“);  
?>  

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图