问答详情
源自:2-10 PHP类和对象之对象的高级特性

关于对象克隆

<?php
class Car {
    public $name = 'car';
    
    public function __clone() {
        $obj = new Car();
        //$obj->name = $this->name;

        $obj->name='test';


    }
}
$a = new Car();
$a->name = 'new car';
$b = clone $a;
echo $b->name;

?>


我的问题是$b = clone $a;此时$b是指由$a调用__clone生成的对象还是?如果是那么echo $b->name;应该打印的值是‘test’,而实际结果确是 new car

提问者:慕娘4227678 2015-03-24 00:24

个回答

  • JourneyCz
    2015-03-25 17:18:36

    题中代码克隆给$b的是$a。

    如果在克隆时要改变原对象的属性,可以通过‘$this->属性名’重写。

    如将题中__clone()改写为:

    function __clone(){

        $this-name = "Clone car";

    }

    将输出: Clone car