Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP instanceof 연산자 완벽 가이드 – 객체 타입 검사 방법


instanceof 연산자 소개

PHP에서는 instanceof 연산자를 사용하여 특정 변수가 어떤 클래스의 객체(인스턴스)인지 여부를 확인할 수 있습니다. 객체 지향 프로그래밍에서 타입 검사는 매우 중요한 작업으로, 코드의 안정성과 유연성을 높이는 데 큰 도움이 됩니다.

기본 문법

$var instanceof 클래스명

이 연산자는 $var가 해당 클래스의 객체라면 boolean 값 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.

예제 1: 기본적인 클래스 검사

다음 예제에서는 instanceof 연산자를 사용해 주어진 객체가 사용자 정의 클래스(testclass)의 인스턴스인지 확인합니다.

<?php
class testclass{
    //클래스 본문
}
$a = new testclass();
if ($a instanceof testclass == TRUE){
    echo "\$a is an object of testclass";
} else {
    echo "\$a is not an object of testclass";
}
?>

출력 결과

실행하면 다음과 같은 결과가 출력됩니다.

$a is an object of testclass

예제 2: NOT 연산자(!)와 함께 사용하기

특정 객체가 해당 클래스의 인스턴스가 아닌지 확인하려면 논리 부정 연산자 !를 함께 사용하면 됩니다.

<?php
class testclass{
    //클래스 본문
}
$a = new testclass();
$b = "Hello";
if (!($b instanceof testclass) == TRUE){
    echo "\$b is not an object of testclass";
} else {
    echo "\$b is an object of testclass";
}
?>

출력 결과

실행하면 다음과 같은 결과가 출력됩니다.

$b is not an object of testclass

$b는 문자열이므로 testclass의 인스턴스가 아니기 때문에 위와 같은 결과가 나타납니다.

예제 3: 부모 클래스 검사

instanceof 연산자는 변수가 어떤 클래스의 부모 클래스의 인스턴스인지도 확인할 수 있습니다. 즉, 상속 관계에 있을 때 자식 클래스의 객체는 부모 클래스의 인스턴스로도 판단됩니다.

<?php
class base{
    //클래스 본문
}
class testclass extends base {
    //클래스 본문
}
$a = new testclass();
var_dump($a instanceof base)
?>

출력 결과

실행하면 다음과 같은 결과가 출력됩니다.

bool(true)

testclass는 base 클래스를 상속받았으므로, $a는 base의 인스턴스이기도 한 것입니다.

예제 4: 인터페이스 구현 검사

instanceof 연산자는 변수가 특정 인터페이스를 구현한 클래스의 인스턴스인지도 확인할 수 있습니다.

<?php
interface base{
}
class testclass implements base {
    //클래스 본문
}
$a = new testclass();
var_dump($a instanceof base)
?>

출력 결과

실행하면 다음과 같은 결과가 출력됩니다.

bool(true)

마무리

이처럼 PHP의 instanceof 연산자는 단순한 클래스 검사를 넘어 상속 관계와 인터페이스 구현 여부까지 확인할 수 있는 강력한 타입 검사 도구입니다. 다형성을 활용하는 객체 지향 코드에서 타입 안전성을 확보해야 할 때 유용하게 활용할 수 있습니다.