| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
PHP5基础教程-类与对象之对象克隆(Object cloning)
  通过完全地复制属性创建一个对象的拷贝不是通常想要的行为。需求的一个好的实例适合于拷贝构造函数,
如果有一个对象描述一个GTK窗口和对象保存这个GTK窗口的资源,当你创建一个副本,你或许想创建一个相同的属性新窗口使用和保存新对象资源的新窗口。另一个例子是当你复制父对象时如果保存一个引用给另一个对象,你想创建其他类的一个新实例来分开拷贝所属的复制品。一个对象的拷贝是使用clone关键字来创建的(如果可能的话可以调用对象的__clone()方法),一个对象的__clone()方法不能被直接声明。

nclick="copycode($('phpcode3'));" href="###">[复制PHP代码]
PHP代码如下:

$copy_of_object = clone $object;

当一个对象被克隆时,PHP5将执行一个所有对象的属性的浅拷贝。任何对其它变量引用的属性将只保留引用。如果一个__clone()方法被定义,然后重新创建一个对象的克隆方法来允许任何必需的属性当它需要被改变时调用。
例子 19-30. 克隆一个对象

PHP代码如下:
CODE:
<?php
class 
SubObject
{   static $instances 0
;
    public 
$instance
;
    public function 
__construct(){  $this->instance=++self::$instances
;  }
    public function 
__clone() {  $this->instance=++self::$instances
;  }
}
class 
MyCloneable
{   public $object1
;
    public 
$object2
;
    function 
__clone
()
    {
       
$this->object1=clone($this->object1);
//Force a copy of this->object,otherwise it will point to same object.
    
}
}
$obj = new MyCloneable
();
$obj->object1 = new SubObject
();
$obj->object2 = new SubObject
();
$obj2 = clone $obj
;
print(
"Original Object:n"
);
print_r($obj
);
print(
"Cloned Object:n"
);
print_r($obj2
);
?> 

上例将输出:

Original Object:

MyCloneable Object
(
    [object1] => SubObject Object
        (
            [instance] => 1
        )
    [object2] => SubObject Object
        (
            [instance] => 2
        )
)
Cloned Object:
MyCloneable Object
(
    [object1] => SubObject Object
        (
            [instance] => 3
        )
    [object2] => SubObject Object
        (
            [instance] => 2
        )
)
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 相关文章