对象比较原则:
1:当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。
2:而如果使用全等运算符(===),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)。
验证实例如下:
<?php
function bool2str($bool)
{
if($bool===false) {
return 'FALSE';
}else {
return 'TRUE';
}
}
function compareObjects(&$o1,&$o2)
{
echo 'o1==o2:'.bool2str($o1==$o2)."<br>";
echo 'o1!=o2:'.bool2str($o1!=$o2)."<br>";
echo 'o1===o2:'.bool2str($o1===$o2)."<br>";
echo 'o1!==o2:'.bool2str($o1!==$o2)."<br>";
}
class Flag
{
public $flag;
function Flag($flag=true) {
$this->flag=$flag;
}
}
class OtherFlag
{
public $flag;
function OtherFlag($flag=true) {
$this->flag=$flag;
}
}
?>
输出结果如下:
Two instances of the same class
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE
Two references to the same instance
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE
Instances of two different classes
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE