前一段时间,看了Java中的对象克隆。感觉自己对于php中的对象克隆也不是很清楚,所以就做了一个小测试。代码如下<?phpclass A{ public $value = 1;}class B{ public $value = 1; public $a = null; public function __Construct(){ $this->a = new A(); }}$b = new B();$d = 1;$e = $d;$e++;echo “写时复制\n”;echo $d."\n";echo $e."\n";echo “————————————\n”;$c = $b;$c->a->value++;$c->value++;echo “对象中的对象变量\n”;echo $b->a->value."\n";echo $c->a->value."\n";echo “对象变量中的值变量\n”;echo $b->value."\n";echo $c->value."\n";echo “————————————–\n”;$f = clone $b;$f->value++;$f->a->value++;echo “对象变量中的值变量\n”;echo $b->value."\n";echo $f->value."\n";echo “对象中的对象变量\n”;echo $b->a->value."\n";echo $f->a->value."\n";?>运行的结果如图和Java还是一致的,结论如下**对于值变量而言,简单的赋值是拷贝。对于对象变量而言,简单的赋值是引用。对于对象变量而言,利用clone进行赋值,对象变量中的值变量是拷贝,对象变量中的对象变量还是引用。**如果有什么理解错误的地方,欢迎朋友指出。