Php 对象复制。有什么区别?

Php 对象复制。有什么区别?,php,object,clone,Php,Object,Clone,在下面的例子中。。我这里有些混乱 <?php class SubObject { static $instances = 0; public $instance; public function __construct() { $this->instance = ++self::$instances; } } class MyCloneable { public $object1; public $object2;

在下面的例子中。。我这里有些混乱

<?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=克隆$obj之间有什么区别;和$obj2=$obj?两者都返回相同的结果。那么我为什么要使用克隆关键字呢

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

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

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