欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP Clone 深复制和浅复制 clclone hdclone memberwiseclon

程序员文章站 2022-04-07 15:58:18
...
今天在看大话设计模式的时候,看到原型模式。其中讲到深复制与浅复制,于是搜索了一下php手册。
看php如何实现深复制与浅复制的。
classSubObject
{static$instances = 0;
    public$instance;

    publicfunction__construct()
    {$this->instance = ++ self::$instances;
    }

    publicfunction__clone()
    {$this->instance = ++self::$instances;
    }
}

classMyCloneable
{public$object1;
    public$object2;

    publicfunction__clone()
    {// 强制复制一份this->object, 否则仍然指向同一个对象// 深复制[将自己的属性重新克隆一份]$this->object1 = clone$this->object1;
        // 浅复制[引用的还是原来,并没有生成新的]//$this->object2 = clone $this->object2;
    }

}

$obj = new MyCloneable();

$obj->object1 = new SubObject();
$obj->object2 = new SubObject();

$obj2 = clone$obj;

print("Original Object:\n");
print_r($obj);

print("Clone Object:\n");
print_r($obj2);

结果

Original Object:
MyCloneable Object
(
    [object1] => SubObject Object
        (
            [instance] => 1
        )

    [object2] => SubObject Object
        (
            [instance] => 2
        )

)
Clone Object:
MyCloneable Object
(
    [object1] => SubObject Object
        (
            [instance] => 3//深复制 所以有+1
        )

    [object2] => SubObject Object
        (
            [instance] => 2//浅复制 并没有创建新的对象
        )

)
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介绍了PHP Clone 深复制和浅复制,包括了clone,php方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

相关标签: clone php