類與物件(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
|
|
<<<返回技術中心