������

�ڶ�������£����Dz�����Ҫ��ȫ����һ������������������ԡ�����һ�������ȷʵ��Ҫ���������һ�� GTK ���ڶ��󣬸ö�����д�����ص���Դ������ܻ��븴��һ���µĴ��ڣ���������������ԭ���Ĵ�����ͬ����������һ���µĶ�����Ϊ��������µĶ�����ôһ�������еĸı�ͻ�Ӱ�쵽��һ�����ڣ�������һ�������������� A �б����Ŷ��� B �����ã����㸴�ƶ��� A ʱ����������ʹ�õĶ������Ƕ��� B ���� B ��һ����������ô�����õ����� A ��һ��������

�����ƿ���ͨ�� clone �ؼ�������ɣ�������ܣ��⽫���ö���� __clone() �������������е� __clone() �������ܱ�ֱ�ӵ��á�

$copy_of_object = clone $object;

�����󱻸��ƺ�PHP 5 ��Զ������������ִ��һ��dz���ƣ�shallow copy�������е��������� ��Ȼ����һ��ָ��ԭ���ı��������á�

__clone ( void ) : void

���������ʱ����������� __clone() ���������´����Ķ��󣨸������ɵĶ����е� __clone() �����ᱻ���ã��������޸����Ե�ֵ������б�Ҫ�Ļ�����

Example #1 ����һ������

<?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->object�� ������Ȼָ��ͬһ������
        
$this->object1 = clone $this->object1;
    }
}

$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
        )

)