현재 위치: > 최신 기사 목록> PHP에서 개체를 비교하는 방법 : 객체 비교를 위해 연산자를 사용하십시오.

PHP에서 개체를 비교하는 방법 : 객체 비교를 위해 연산자를 사용하십시오.

M66 2025-06-17

1. 서문

객체 지향 PHP 응용 프로그램을 개발할 때는 종종 객체를 비교하고 동등한 지 여부를 결정해야합니다. 이 기사는 PHP의 객체를 비교하는 다양한 방법과 그 뒤에있는 원칙을 심층적으로 탐구합니다.

2. PHP의 물체 비교

PHP에서는 비교 연산자 (예 : ==,! =, ==,! ==)를 사용하여 객체를 비교할 수 있습니다. 이 연산자는 유형이 동일인지 또는 동일한 메모리 주소를 가리키는 지 여부에 관계없이 두 객체의 동등성을 결정하는 데 도움이됩니다. 구체적으로:

== : 두 객체의 속성 값이 동일인지 결정합니다.

! = : 두 객체의 속성 값이 동일하지 않은지 결정합니다.

=== : 두 객체가 동일한 객체인지 확인하십시오.

! == : 두 객체가 동일한 객체인지 여부를 결정하십시오.

2.1 == 운영자

== 연산자는 두 객체의 속성 값을 비교하는 데 사용됩니다. 두 객체의 속성 값이 같고, 그렇지 않으면 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의 두 객체를 생성하므로 출력은 "두 개의 객체 동일"입니다.

2.2! = 연산자

! = 연산자는 두 객체의 속성 값이 동일하지 않은지 결정합니다. 속성 값이 같지 않은 경우 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의 속성 값이 다르기 때문에 출력 결과는 "두 객체의 속성 값이 같지 않습니다"입니다.

2.3 === 운영자

=== 연산자는 두 객체가 동일한 객체인지 비교하는 데 사용됩니다. 두 객체가 동일한 메모리 주소를 가리키는 경우에만 true를 반환합니다. 그렇지 않으면 false.

 $obj1 = new stdClass();
$obj2 = $obj1;

if ($obj1 === $obj2) {
    echo '두 객체는 ​​같은 객체입니다';
} else {
    echo '두 객체는 ​​같은 객체가 아닙니다';
}

이 코드 스 니펫에서 $ OBJ2는 $ OBJ1의 메모리 주소를 가리키므로 출력은 "두 객체는 ​​동일한 개체"입니다.

2.4! == 운영자

! == 연산자는 === 연산자의 대칭 작업으로, 두 객체가 동일한 객체인지 여부를 결정합니다. 두 객체가 다른 메모리 주소를 가리키면 true를 반환하고 그렇지 않으면 false를 반환합니다.

 $obj1 = new stdClass();
$obj2 = $obj1;
$obj3 = new stdClass();

if ($obj1 !== $obj3) {
    echo '두 객체는 ​​같은 객체가 아닙니다';
} else {
    echo '두 객체는 ​​같은 객체입니다';
}

이 예에서 $ OBJ1과 $ OBJ3은 두 개의 다른 객체이며 출력은 "두 객체는 ​​동일한 객체가 아닙니다"입니다.

3. 물체의 비교 원리

PHP에서 비교 연산자를 사용하여 객체를 비교할 때 시스템은 객체의 __toString () 메소드를 자동으로 호출하여 객체를 문자열로 변환하려고 시도합니다. 객체 가이 메소드를 구현하지 않으면 PHP는 "Catchable Fathal Error"라는 오류를보고합니다.

객체가 __toString () 메소드를 구현하면이 메소드가 호출되어 객체를 문자열로 변환 한 다음 비교합니다. 객체를 비교할 때 PHP는 객체의 속성 값 만 고려하고 메소드가 포함되지 않습니다. 따라서 두 객체의 속성 값이 동일하지만 다른 방법이 동일하면 PHP는 여전히 동일하게 간주합니다.

4. 요약

이 기사에서는 PHP에서 객체와 그 뒤에있는 원리를 비교하는 방법에 대해 설명합니다. 비교 연산자를 올바르게 사용하면 두 객체의 동등성과 동일한 개체인지를 효과적으로 판단 할 수 있으며, 객체를 비교할 때 방법보다는 속성 값에주의를 기울여야합니다.