【问题标题】:Object Copying. What's the difference?对象复制。有什么不同?
【发布时间】:2013-11-22 12:39:08
【问题描述】:

在下面的例子中......我在这里有些困惑

<?php
class SubObject
{
    static $instances = 0;
    public $instance;

    public function __construct() {
        $this->instance = ++self::$instances;
    }

}

class MyCloneable
{
    public $object1;
    public $object2;

    function __clone()
    {
        $this->object1 = clone $this->object1;
        $this->object2 = clone $this->object2;
    }
}

$obj = new MyCloneable();

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

$obj2 = clone $obj;//If i use $obj2 = $obj; it does return the same results.

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

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

$obj2 = clone $obj;$obj2 = $obj; 之间有什么区别?两者都返回相同的结果。那我为什么要使用clone关键字呢?

【问题讨论】:

    标签: php object clone


    【解决方案1】:
    $obj2 = clone $obj
    var_dump($obj === $obj2); // bool(false)
    

    它基于$obj创建一个新的MyCloneable实例并将其存储到$obj2中。
    每个变量都包含一个MyCloneable的实例。


    $obj2 = $obj
    var_dump($obj === $obj2); // bool(true)
    

    上面的语句将$obj赋值给$obj2
    这两个变量是同一个实例。

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多