您的位置:首頁技術文章
文章詳情頁

PHP基礎之類和對象18——對象比較

瀏覽:12日期:2022-09-14 18:54:41

PHP 5 中的對象比較要比 PHP 4 中復雜,所期望的結果更符合一個面向對象語言。

當使用比較運算符(==)比較兩個對象變量時,比較的原則是:如果兩個對象的屬性和屬性值 都相等,而且兩個對象是同一個類的實例,那么這兩個對象變量相等。

而如果使用全等運算符(===),這兩個對象變量一定要指向某個類的同一個實例(即同一個對象)。

通過下面的示例可以理解以上原則。

Example #1 PHP 5 的對象比較

<?phpfunction bool2str($bool){ if ($bool === false) {return ’FALSE’; } else {return ’TRUE’; }}function compareObjects(&$o1, &$o2){ echo ’o1 == o2 : ’ . bool2str($o1 == $o2) . 'n'; echo ’o1 != o2 : ’ . bool2str($o1 != $o2) . 'n'; echo ’o1 === o2 : ’ . bool2str($o1 === $o2) . 'n'; echo ’o1 !== o2 : ’ . bool2str($o1 !== $o2) . 'n';}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 classn';compareObjects($o, $p);echo 'nTwo references to the same instancen';compareObjects($o, $q);echo 'nInstances of two different classesn';compareObjects($o, $r);?>

以上例程會輸出:

Two instances of the same classo1 == o2 : TRUEo1 != o2 : FALSEo1 === o2 : FALSEo1 !== o2 : TRUETwo references to the same instanceo1 == o2 : TRUEo1 != o2 : FALSEo1 === o2 : TRUEo1 !== o2 : FALSEInstances of two different classeso1 == o2 : FALSEo1 != o2 : TRUEo1 === o2 : FALSEo1 !== o2 : TRUE

Note:

PHP 擴展中可以自行定義對象比較的原則。

標簽: PHP
相關文章:
国产综合久久一区二区三区