<?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()方法也是上述输出呢?
__clone()方法里的两条语句是 clone 本来就有的,所以不定义__clone() 结果也是一样的。建议 改成 echo something,以免大家误会
clone关键字应该是调用php内置clone方法,讲解的代码只是把那个方法重写了吧。只是为了方便我们看明白。