`
txf2004
  • 浏览: 6867261 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PHP5的对象模型[5]--对象复制

PHP 
阅读更多
第五节--克隆

PHP5中的对象模型通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone. 像__construct和__destruct一样,前面有两个下划线.

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

克隆的方法可以没有参数,但它同时包含this和that指针(that指向被复制的对象). 如果你选择克隆自己,你要小心复制任何你要你的对象包含的信息,从that到this. 如果你用__clone来复制. PHP不会执行任何隐性的复制,

下面显示了一个用系列序数来自动化对象的例子:

<?php <BR>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() . "
");
?>

分享到:
评论

相关推荐

    《PHP5的对象模型》

    PHP5的对象模型[1]--面向对象编程 PHP5的对象模型[2]--对象模型 PHP5的对象模型[3]--定义一个类 PHP5的对象模型[4]--构造函数和析构函数 PHP5的对象模型[5]--对象复制

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

    PHP5中的对象模型通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone. 像__construct和__destruct一样,前面有...

    PHP5 面向对象程序设计

    PHP5有一个单重继承的,限制访问的,可以重载的对象模型. 本章稍后会详细讨论的”继承”,包含类间的父-子关系. 另外,PHP支持对属性和方法的限制性访问. 你可以声明成员为private,不允许外部类访问. 最后,PHP允许一...

    PHP 5.0对象模型深度探索之属性和方法

    可以联用->,如果一个对象的属性包含了一个对象,你可以使用两个->运算符来得到内部对象的属性. 你甚至可以用双重引用的字符串来放置这些表达式. 下面的例子中,对象House中的属性room包含了一组Room对象。 访问...

    php设计模式 DAO(数据访问对象模式)

    php /** * 数据访问对象(Data Access Object) 示例 * * @create_date: 2010-01-04 */ class BaseDAO { var $_db = null; var $_table = null; function BaseDAO($config) { $this-&gt;_db = new MysqlDB(); // 这里的不...

    php网络开发完全手册

    目录 第1章 PHP的介绍及环境搭建 2 1.1 PHP简介 2 1.1.1 PHP语言的发展简史 2 ...18.1.2 系统模型设计 298 18.1.3 数据库设计 299 18.1.4 公共功能设计 299 18.2 使用MySQL与PHP创建一个留言本 300 18.2.1 查看留言功能...

    automapper-plus:适用于PHP的AutoMapper

    目录反向映射复制映射自动创建映射解析属性名称命名约定明确说明源属性使用回调解析名称选项对象设定选项对于AutoMapperConfig 对于映射用stdClass映射物品箱的概念数组映射使用自定义映射器添加上下文杂项相似的...

    PHP和MySQL Web开发第4版pdf以及源码

    12.7 实现复制 12.7.1 设置主服务器 12.7.2 执行初始的数据传输 12.7.3 设置一个/多个从服务器 12.8 进一步学习 12.9 下一章 第13章 MySQL高级编程 13.1 LOAD DATA INFILE语句 13.2 存储引擎 13.3 事务 ...

    PHP和MySQL WEB开发(第4版)

    12.7 实现复制 12.7.1 设置主服务器 12.7.2 执行初始的数据传输 12.7.3 设置一个/多个从服务器 12.8 进一步学习 12.9 下一章 第13章 MySQL高级编程 13.1 LOAD DATA INFILE语句 13.2 存储引擎 13.3 事务 13.3.1 理解...

    MySQL 5.1中文手冊

    前言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 ... InnoDB事务模型和锁定 15.2.11. InnoDB性能调节提示 15.2.12. 多版本的实施 15.2.13. 表和索引结构 15.2.14. 文件空间管理和磁盘I...

    PHP高级对象构建 工厂模式的使用

    PHP设计模式工厂模式的使用方法 复制代码 代码如下: &lt;?php /* * 每日练习 PHP设计模式工厂模式的使用方法 * PHP工厂模式不难理解,顾名思义,就是一个加工厂,然后工厂是制造产品的,只要制造产品 * 就必须有几个...

    PHP和MySQL Web开发第4版

    12.7 实现复制 12.7.1 设置主服务器 12.7.2 执行初始的数据传输 12.7.3 设置一个/多个从服务器 12.8 进一步学习 12.9 下一章 第13章 MySQL高级编程 13.1 LOAD DATA INFILE语句 13.2 存储引擎 13.3 事务 ...

    DOM基础及php读取xml内容操作的方法

    DOM(Document Object Model):文档对象模型。核心思想是:把 xml文件看作是一个对象模型,然后通过对象的方式来操作 xml 文件。 php对xml文档进行增删改查(curd)操作,具体分析如下: xml文档:class.xml 复制...

    java版斗地主源码-jdcloud-wui:筋斗云前端单页应用框架

    这些模块遵守**“页面对象模型”**,从而可以像搭积木一样构建起应用,尤其适用于大型业务系统。 它一般与筋斗云后端服务结合使用,可以使用以下开源框架实现筋斗云后端服务: (筋斗云后端php版本) (筋斗云后端java...

    MySQL 5.1官方简体中文参考手册

    5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL日志文件 5.11.1. 错误日志 5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. ...

    网络艺术入职

    MVC OrientaçãoáObjetos 超级模型大师 卡达斯特罗(Cadastro),莱图拉(Leitura),埃迪桑和达莫斯 上载图像 Alertas em JS para asaçõesde sucesso e erro CSSbásicopara Organizar o FrontSubindo esse ...

    MYSQL中文手册

    5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL日志文件 5.11.1. 错误日志 5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 ...

    MongoDB权威指南(中文版)高清

    15111.2.4 评论树 15211.2.5 投票 15311.3 自定义提交表单:Ruby 15411.3.1 安装Ruby驱动 15411.3.2 使用Ruby驱动 15511.3.3 自定义表单提交 15511.3.4 Ruby的对象映射和在Rails中使用MongoDB 15711.4...

    YzmCMS轻量级开源CMS-PHP

    5.模型选项字段支持自定义key; 6.新增全局token验证,提高系统安全; 7.内容列表新增缩略图预览功能; 8.系统编辑器升级优化,新增远程拉取图像入库; 9.新增标签复制功能; 10.后台菜单管理新增收缩/展开功能; 11.内容...

Global site tag (gtag.js) - Google Analytics