关于对象克隆

来源:2-10 PHP类和对象之对象的高级特性

慕娘4227678

2015-03-24 00:24

<?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

写回答 关注

1回答

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

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

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

    如将题中__clone()改写为:

    function __clone(){

        $this-name = "Clone car";

    }

    将输出: Clone car

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181835 学习 · 2577 问题

查看课程

相似问题