克隆 -- Classes and Objects in PHP5 [5]

社区服务
高级搜索
猴岛论坛电脑百科克隆 -- Classes and Objects in PHP5 [5]
发帖 回复
正序阅读 最近浏览的帖子最近浏览的版块
6个回复

克隆 -- Classes and Objects in PHP5 [5]

楼层直达
小ぃ宇

ZxID:1770735

等级: 上将
配偶: irio123
总有一天、。红色的钞票要印上老子的SMILE...做人要猴岛
举报 只看楼主 使用道具 楼主   发表于: 2008-11-01 0
/*
+-------------------------------------------------------------------------------+
| = 本文为Haohappy读<>
| = 中Classes and Objects一章的笔记
| = 翻译为主+个人心得
| = 为避免可能发生的不必要的麻烦请勿转载,谢谢
| = 欢迎批评指正,希望和所有PHP爱好者共同进步!
+-------------------------------------------------------------------------------+
*/

--克隆

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 $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() . "
");
?>
djin

ZxID:3747289

等级: 中将
当过兵站过岗,耍过流氓入过党!上过班下过岗,打过领导得过奖!

举报 只看该作者 6楼  发表于: 2009-04-29 0
这个有什么用的,,
猫了个咪滴

ZxID:5814163

等级: 准尉
一朝离别,两地相隔三番四次苦相思奈何,造物弄人或许,缘来缘尽
举报 只看该作者 5楼  发表于: 2009-04-13 0
有待研究
   ℡   

ZxID:3088858

等级: 禁止发言

举报 只看该作者 4楼  发表于: 2009-04-10 0
[marquee scrolldelay=500 scrollamount=100]走一步停一停[/marquee]
冷尘

ZxID:2312963

等级: 上将
花非花。雾非雾。夜半来。天明去。
举报 只看该作者 地板   发表于: 2009-04-03 0
楼主确定这是原创?
  待  浮  花  浪  蕊  俱  尽, 伴  君  幽  独
hd651061301

ZxID:3653857

等级: 中校
用G是一种潮流 也是 一种 时尚 、、

举报 只看该作者 板凳   发表于: 2009-03-31 0
盲目、、
pzx51

ZxID:5185294

等级: 新兵
举报 只看该作者 沙发   发表于: 2009-03-24 0
真的行吗?
« 返回列表
发帖 回复