关于clone关键字

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

BayLite

2015-06-28 22:18

<?php

class Car {

    public $name = 'car';

    public $speed = 100;

    public function __clone() {

        $obj = new Car();

        $obj->name = $this->name;

    }

}

$a = new Car();

var_dump($a);

$b = clone $a;

var_dump($b)

为什么输出的是:

object(Car)#1 (2) {
["name"]=>
string(3) "car"
["speed"]=>
int(100)
}
object(Car)#2 (2) {
["name"]=>
string(3) "car"
["speed"]=>
int(100)
}

即使注释掉__clone()方法也是上述输出呢?

写回答 关注

2回答

  • fishfishmanman
    2015-10-14 14:11:53
    已采纳

    __clone()方法里的两条语句是 clone 本来就有的,所以不定义__clone() 结果也是一样的。建议 改成 echo something,以免大家误会

    BayLit...

    非常感谢!

    2015-12-06 14:38:36

    共 1 条回复 >

  • Cythine
    2015-11-18 11:07:52

    clone关键字应该是调用php内置clone方法,讲解的代码只是把那个方法重写了吧。只是为了方便我们看明白。

PHP进阶篇

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

181837 学习 · 2577 问题

查看课程

相似问题