PHP 5.0对象模型深度探索之对象复制

yipeiwu_com6年前PHP代码库
默认地,用__clone方法将建立一个与原对象拥有相同属性和方法的对象. 如果你想在克隆时改变默认的内容,你要在__clone中覆写(属性或方法)。

  克隆的方法可以没有参数,但它同时包含this和that指针(that指向被复制的对象)。如果你选择克隆自己,你要小心复制任何你要你的对象包含的信息,从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 $this->name"; 
  $this->id = ++self::$nextSerial; 
 } 

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

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


$ot = new ObjectTracker("Zeev's Object"); 
$ot2 = clone$ot; 

//输出: 1 Zeev's Object 
print($ot->getId() . " " . $ot->getName() . ""); 

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

相关文章

PHP基于GD库实现的生成图片缩略图函数示例

本文实例讲述了PHP基于GD库实现的生成图片缩略图函数。分享给大家供大家参考,具体如下: <?php /** * 生成缩略图函数(支持图片格式:gif、jpeg、pn...

php获取远程图片并下载保存到本地的方法分析

本文实例讲述了php获取远程图片并下载保存到本地的方法。分享给大家供大家参考,具体如下: 远程图片指的是远端服务器上的数据我们可以通过php的许多函数来读取下载了,这里整理了两个可以自动...

php实现两表合并成新表并且有序排列的方法

本文实例讲述了php实现两表合并成新表并且有序排列的方法。分享给大家供大家参考。 具体实现方法如下: 复制代码 代码如下:<?php /** la (3,5,8,11)...

PHP实现的分页类定义与用法示例

PHP实现的分页类定义与用法示例

本文实例讲述了PHP实现的分页类定义与用法。分享给大家供大家参考,具体如下: <?php class Page { private $total; /...

允许phpmyadmin空密码登录的配置方法

这是因为默认phpmyadmin空密码登录是被禁止的,如果想要phpmyadmin空密码允许登录,就需要修改phpmyadmin相关配置。 在phpmyadmin3安装配置图解教程一文中...