關于clone關鍵字
<?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()方法也是上述輸出呢?
2015-10-14
__clone()方法里的兩條語句是 clone 本來就有的,所以不定義__clone() 結果也是一樣的。建議 改成 echo something,以免大家誤會
2015-11-18
clone關鍵字應該是調用php內置clone方法,講解的代碼只是把那個方法重寫了吧。只是為了方便我們看明白。