객체 지향 PHP 응용 프로그램을 개발할 때는 종종 객체를 비교하고 동등한 지 여부를 결정해야합니다. 이 기사는 PHP의 객체를 비교하는 다양한 방법과 그 뒤에있는 원칙을 심층적으로 탐구합니다.
PHP에서는 비교 연산자 (예 : ==,! =, ==,! ==)를 사용하여 객체를 비교할 수 있습니다. 이 연산자는 유형이 동일인지 또는 동일한 메모리 주소를 가리키는 지 여부에 관계없이 두 객체의 동등성을 결정하는 데 도움이됩니다. 구체적으로:
== : 두 객체의 속성 값이 동일인지 결정합니다.
! = : 두 객체의 속성 값이 동일하지 않은지 결정합니다.
=== : 두 객체가 동일한 객체인지 확인하십시오.
! == : 두 객체가 동일한 객체인지 여부를 결정하십시오.
== 연산자는 두 객체의 속성 값을 비교하는 데 사용됩니다. 두 객체의 속성 값이 같고, 그렇지 않으면 false 인 경우 true를 반환하십시오.
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = '장 산';
$obj1->age = 20;
$obj2->name = '장 산';
$obj2->age = 20;
if ($obj1 == $obj2) {
echo '두 객체는 동일합니다';
} else {
echo '두 객체는 동일하지 않습니다';
}
위의 코드에서는 속성 값이 동일한 유형 stdclass의 두 객체를 생성하므로 출력은 "두 개의 객체 동일"입니다.
! = 연산자는 두 객체의 속성 값이 동일하지 않은지 결정합니다. 속성 값이 같지 않은 경우 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 () 메소드를 자동으로 호출하여 객체를 문자열로 변환하려고 시도합니다. 객체 가이 메소드를 구현하지 않으면 PHP는 "Catchable Fathal Error"라는 오류를보고합니다.
객체가 __toString () 메소드를 구현하면이 메소드가 호출되어 객체를 문자열로 변환 한 다음 비교합니다. 객체를 비교할 때 PHP는 객체의 속성 값 만 고려하고 메소드가 포함되지 않습니다. 따라서 두 객체의 속성 값이 동일하지만 다른 방법이 동일하면 PHP는 여전히 동일하게 간주합니다.
이 기사에서는 PHP에서 객체와 그 뒤에있는 원리를 비교하는 방법에 대해 설명합니다. 비교 연산자를 올바르게 사용하면 두 객체의 동등성과 동일한 개체인지를 효과적으로 판단 할 수 있으며, 객체를 비교할 때 방법보다는 속성 값에주의를 기울여야합니다.