<?php
/**
* Created by PhpStorm.
* User: tusi
* Date: 2017/8/25
* Time: 10:21
*/
class SubObject
{
static $instances=0;
public $instance;
public function __construct(){
$this->instance=++self::$instances;
}//构造函数,每实例化对象一次,将公有属性$instance值加1
public function __clone(){
$this->instance=++self::$instances;
}//对象复制函数,如果对象中定义了__clone方法,则复制生成的对象中的__clone方法会被调用
}
class MyCloneable
{
public $object1;
public $object2;
function __clone(){
//强制复制一份this->object1,否则仍然指向同一个对象。
$this->object1=clone $this->object1;
}
}
$obj=new MyCloneable();
$obj->object1=new SubObject();
$obj->object2=new SubObject();
$obj2=clone $obj;
echo '<pre>';
echo "Original Object:"."<br />";
var_dump($obj);
echo "Cloned Object:"."<br />";
var_dump(($obj2));
运行如下: