类与对象(PHP5)之十三:对象比较(Comparing objects)

日期:2006-09-26  作者:喜腾小二  来源:PHPChina


在PHP5中,对象的比较比PHP4中的更复杂和更协调的期望的一个面向对象语言(倒不是说PHP5是这样的一门语言)。当使用比较操作符(==),对象变量以一种简单的方式被比较。也就是:如果它们具有相同的属性和值,两个对象的实例是相等,并且是同一个类的实例。
另一方面,当使用恒等式操作符(===)时,对象变量当且仅当它们引用同一个类的同一个实例时是相同的
一个例子就可以阐明这些规则
例子
19-31.PHP5中的对象比较实例
PHP代码如下:

php
function bool2str($bool)
{    if (
$bool===false) {  return 'FALSE';  } 
else {  return 
'TRUE';  }
}
function 
compareObjects(&$o1, &$o2)
{   echo 
'o1 == o2 : 'bool2str($o1 == $o2) . "
"
;
    echo 
'o1 != o2 : ' bool2str($o1 != $o2) . "
"
;
    echo 
'o1 === o2 : ' bool2str($o1 === $o2) . "
"
;
    echo 
'o1 !== o2 : ' bool2str($o1 !== $o2) . "
"
;
}
class 
Flag
{   public $flag;
    function 
Flag($flag true) {  $this->flag $flag;  }
}
class 
OtherFlag
{   public $flag;
    function 
OtherFlag($flag true) {  $this->flag $flag;  }
}
$o = new Flag();
$p = new Flag();
$q $o;
$r = new OtherFlag();
echo 
"Two instances of the same class
"
;
compareObjects($o$p);
echo 
"
Two references to the same instance
"
;
compareObjects($o$q);
echo 
"
Instances of two different classes
"
;
compareObjects($o$r);
?> 


上例将输出:

[Copy to clipboard]CODE:
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

<<<返回技术中心

技术文章

站内新闻

我要啦免费统计