最近看到一个很有意思的对象处理相关问题。
在php中使用clone可以克隆复制一个对象,克隆的对象是和被克隆的对象相等的,但不是全等的。clone对象的定义是在对对象的属性进行一个浅复制,所有的引用属性仍然是指向原来变量的引用。
<?php
class myTestClass{
public $name = "name";
public function __construct(){
$this->name = $name;
}
public function getNmae(){
return $this->name;
}
}
$myClass = new myTestClass();
$myCass1 = clone $myClass;
// $myClass == $myClass1
// $myClass !== $myClass1
?>
这个clone的对象和源对象不是全等的。
php引用的定义是两个不同的变量指向相同的内容,一个对象变量不是保存对象的所有值,而是只保存一个标识符来访问真正对象内容,当这个对象变量赋值给另一个变量,这两个变量保存和记录同一个指向对象内容的标识符,这个标识符指向同一个对象的真正内容。
<?php
class myTestClass{
public $name = "name";
public function __construct(){
$this->name = $name;
}
public function getNmae(){
return $this->name;
}
}
$myClass = new myTestClass();
$myC;ass1 = &$myClass;
$myClass2 = $myClass;
// $myClass === $myClass1
// $myClass === $myClass2;
?>