객체 지향 PHP 응용 프로그램을 개발할 때는 종종 동등한 지 여부를 결정하는 것과 같은 두 객체를 비교해야합니다. 이 기사는 PHP에서 객체 비교를 수행하는 방법을 살펴보고 다양한 비교 연산자의 적용을 깊이 분석합니다.
PHP는 객체의 속성 값이 동일한 개체인지, 다른 속성 값을 갖는지 여부를 결정하는 데 사용되는 ==,! =, ==,! ==와 같은 객체를 비교하기위한 다양한 연산자를 제공합니다.
일반적인 비교 연산자는 다음과 같습니다.
==
위의 예에서, $ obj1 및 $ obj2 의 속성 값은 동일하기 때문에 출력 "두 객체는 동일하다".
! = 연산자는 == 함수와 반대이며 두 객체의 속성 값이 동일하지 않은지 여부를 결정하는 데 사용됩니다. 속성 값이 같지 않은 경우 true를 반환합니다. 그렇지 않으면 false를 반환하십시오.
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = '장 산';
$obj1->age = 20;
$obj2->name = 'Li Si';
$obj2->age = 30;
if ($obj1 != $obj2) {
echo '두 객체의 속성 값은 동일하지 않습니다.';
} else {
echo '두 객체의 속성 값은 동일합니다';
}
이 예에서 $ obj1 및 $ obj2 의 속성 값이 다르기 때문에 출력 "두 객체의 속성 값은 같지 않습니다".
=== 연산자는 두 객체가 동일한 객체인지, 즉 동일한 메모리 주소를 가리키는 지 여부를 결정하는 데 사용됩니다. 동일한 객체 인 경우 True 를 반환하십시오. 그렇지 않으면 False를 반환하십시오.
$obj1 = new stdClass();
$obj2 = $obj1;
if ($obj1 === $obj2) {
echo '두 객체는 같은 객체입니다';
} else {
echo '두 객체는 같은 객체가 아닙니다';
}
이 예에서 $ OBJ2 는 $ OBJ1 의 메모리 주소를 직접 가리키므로 "두 객체는 동일한 객체"입니다.
! == 연산자는 === 연산자와 대칭이며 두 객체가 동일한 객체인지 여부를 결정하는 데 사용됩니다. 두 객체가 다른 메모리 주소를 가리키면 true를 반환하고 그렇지 않으면 false를 반환합니다.
$obj1 = new stdClass();
$obj2 = $obj1;
$obj3 = new stdClass();
if ($obj1 !== $obj3) {
echo '두 객체는 같은 객체가 아닙니다';
} else {
echo '두 객체는 같은 객체입니다';
}
이 예에서 $ OBJ1 및 $ OBJ3 은 다른 메모리 주소를 가리므로 출력은 "두 객체가 동일한 객체가 아닙니다".
PHP가 비교 연산자를 사용하여 객체를 비교하면 객체의 __toString () 메소드가 자동으로 호출되어 객체를 문자열로 변환하여 비교합니다. 객체 가이 방법을 구현하지 않으면 "캐치 가능한 치명적 오류"오류가 발생합니다.
따라서 객체 비교를 수행 할 때 객체가 __toString () 메소드를 구현하는 것이 좋습니다. 그렇지 않으면 오류가 발생합니다. PHP는 방법이 아닌 객체의 속성 값을 비교한다는 점에 유의해야합니다.
이 기사는 비교를 위해 다양한 연산자를 사용하는 방법을 포함하여 PHP의 객체를 비교하는 방법을 소개합니다. 객체 비교를 수행 할 때 개발자는 객체의 속성 값에주의를 기울이고 오류를 피하기 위해 __toString () 메소드를 구현해야합니다.