`__clone` 应该是clone时 自动调用的。例如你在`__clone`中添加一句echo:
public function __clone() {
echo "i am a clone man";
$obj = new Car();
$obj->name = $this->name;
}
那么在$b = clone $a; 时, i am a clone man 这句话就会被打印出来。
public function __clone() {
echo "i am a clone man";
$obj = new Car();
$obj->name = $this->name;
}
那么在$b = clone $a; 时, i am a clone man 这句话就会被打印出来。
2015-07-25
__clone 应该是clone时 自动调用的。例如你在__clone中添加一句echo:
public function __clone() {
echo "i am a clone man";
$obj = new Car();
$obj->name = $this->name;
}
那么在$b = clone $a; 时, i am a clone man这句话就会被打印出来。
public function __clone() {
echo "i am a clone man";
$obj = new Car();
$obj->name = $this->name;
}
那么在$b = clone $a; 时, i am a clone man这句话就会被打印出来。
2015-07-25
$b = clone $a;判断的结果是 == 如果你把clone 去掉 ,那么判断的结果是 === 。 ===是什么意思? 值相同,类型也一样。== 意思是只有值是相同的。那么到底差别在哪呢?通过var_dump $a object(Car)#1 (1) { ["name"]=> string(7) "new car" } $b object(Car)#2 (1) { ["name"]=> string(7) "new car" } 加上clone 后 内存中是两块地址,互不相干。如果不加,那么类还是那个类,只不过有两个名字而已 ,你改$a,$b也会跟着改变。不知道这么理解对不对?
2015-07-24
也就是说,这个是你不确定这个类里面 的属性(外面来的)和方法(多个方法不确定用哪个,按情况而定)时 用的。
在这种情况下,你实例化这个类时,对象创建陌生属性时会自动使用__set 之后你对这个属性进行操作 用__get 检查存在感用__isset 删掉用__unset
传方法进去用__call,在调用没有的方法是 自动使用__call生成 ,我猜那个args应该是传进去的方法的实参。也不知道这么想对不对。
在这种情况下,你实例化这个类时,对象创建陌生属性时会自动使用__set 之后你对这个属性进行操作 用__get 检查存在感用__isset 删掉用__unset
传方法进去用__call,在调用没有的方法是 自动使用__call生成 ,我猜那个args应该是传进去的方法的实参。也不知道这么想对不对。
2015-07-24