类与对象(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
|
|
<<<返回技术中心