물체 간의 관계를 비교하는 것은 객체 지향 PHP 응용 프로그램을 개발할 때, 특히 두 객체가 같은지 판단 할 때 일반적인 작업입니다. 이 기사는 PHP의 심층적 인 방법과 객체 비교 원리를 탐구합니다.
PHP에서는 비교 연산자 (예 : ==,! =, ===,! ==)를 사용하여 객체를 비교할 수 있습니다. 이 연산자는 두 객체가 동일하고 동일한 유형에 속하며 동일한 값을 포함하는지 여부를 결정하는 데 도움을 줄 수 있습니다. 다음은 각 비교 연산자에 대한 자세한 설명입니다.
"=="연산자를 사용하는 경우 PHP는 두 객체의 속성 값이 동일한 지 비교합니다. 동일하면 true를 반환하고 그렇지 않으면 false를 반환하십시오.
$obj1 = new stdClass();
$obj2 = new stdClass();
$obj1->name = '장 산';
$obj1->age = 20;
$obj2->name = '장 산';
$obj2->age = 20;
if ($obj1 == $obj2) {
echo '두 객체는 동일합니다';
} else {
echo '두 객체는 동일하지 않습니다';
}
위 코드에서 두 객체의 속성 값이 동일하므로 출력 "두 객체는 동일합니다".
"! ="연산자는 두 객체의 속성 값이 같지 않은지 확인하는 데 사용됩니다. 동일하지 않으면 참전을 반환하고 그렇지 않으면 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 = 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는 여전히 동일하다고 생각합니다.
이 기사는 PHP 및 관련 연산자의 객체를 비교하는 일반적인 방법을 소개합니다 (==,! =, ==,! ==). 객체를 비교할 때는 방법의 차이가 아니라 객체의 속성 값에 중점을 두어야합니다. 동시에, 객체가 비교 중에 오류를 피하기 위해 __toString () 메소드를 구현해야합니다.