PHP5中的对象模型通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone. 像__construct和__destruct一样,前面有两个下划线。
默认地,用__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 5.0对象模型深度探索之对象复制
发布时间:2007-6-18 15:47 作者: 网络转载 信息来源:
PHPchina [我来说两句(815条)]
现在有0人对本文发表评论
查看全部评论>>评论区
培训新闻
- 广州多迪,零起点,四个月培养高级工程师,包...
- 大连开沅教育(PHP大连中心)12月LAMP项目实...
- 济南第九期LAMP实训就业班冬节火热报名中
- 西安PCTI-5期业余班热招中......
- 上海LAMP一期实战精英班11月27日开班啦~~~~~...
- 北京培训中心PCTI-18期 开始热招了~~~~~
- 上海LAMP兄弟连就业二期(12月中旬)直通车开...
- 北京“免费”就业九期直通车开始热招
热点专题
网站特别推荐
- 广州多迪,零起点,四个月培养高级工程师,包...
- PHP考试认证问题
- 大连开沅教育(PHP大连中心)12月LAMP项目实...
- 福州厦门什么时候有开培训班
- 济南第九期LAMP实训就业班冬节火热报名中
- 西安PCTI-5期业余班热招中......
- 济南12月LAMP软件工程师班开始报名......!
- 上海LAMP一期实战精英班12月3日开班啦~~~~~~...
- 北京培训中心PCTI-18期 开始热招了~~~~~
- 上海LAMP就业二期脱产班(12月中旬)直通车开...
社区精华
- leehui1983MYSQL开发实用知识集合(暂告一段落...
- laruence深入理解PHP原理之文件上传
- peacock【重点推荐】一款专业级Web开发工具
- 夢諾雨蓒授人渔而非鱼之程序调试及解决问题之...
- 某个人让设计不再成为负担-设计模式详解【...





