PHP 5의 객체 비교는 PHP 4보다 더 복잡하며 원하는 결과는 객체 지향 언어와 더 일치합니다.
비교 연산자(==)를 사용하여 두 개체 변수를 비교할 때 비교 원칙은 두 개체의 속성과 속성 값이 동일하고 두 개체가 동일한 인스턴스인 경우입니다. class, 그러면 두 개체 변수가 동일합니다.
항등 연산자(===)를 사용하는 경우 이 두 객체 변수는 특정 클래스의 동일한 인스턴스(즉, 동일한 객체)를 가리켜야 합니다.
위의 원칙은 다음 예를 통해 이해할 수 있습니다.
예제 #1 PHP 5의 객체 비교
<?php function 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 class\n"; compareObjects($o, $p); echo "\nTwo references to the same instance\n"; compareObjects($o, $q); echo "\nInstances of two different classes\n"; compareObjects($o, $r); ?>
위 루틴은 다음을 출력합니다.
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
참고:
다음에서 사용할 수 있습니다. PHP 확장 객체 비교의 원칙을 직접 정의하십시오.