자료형 연산자
instanceof
는 PHP 변수가 특정 클래스의 인스턴스화된 객체인지 여부를 결정하는 데 사용됩니다.
예제 #1 클래스와 함께 instanceof
사용
<?php
class MyClass
{
}
class NotMyClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>
위의 예는 다음과 유사한 결과를 출력합니다.
bool(true) bool(false)
instanceof
는 변수가 부모 클래스에서 상속된 클래스의 인스턴스화된 객체인지 여부를 결정하는 데 사용할 수도 있습니다.
예제 #2 상속된 클래스와 함께 instanceof
사용
<?php
class ParentClass
{
}
class MyClass extends ParentClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof ParentClass);
?>
위의 예는 다음과 유사한 결과를 출력합니다.
bool(true) bool(true)
객체가 클래스의 인스턴스가 아닌지 확인하려면 논리적 not
연산자를 사용할 수 있습니다.
예제 #3 instanceof
를 사용하여 객체가 클래스의 instanceof가 아닌지 확인
<?php
class MyClass
{
}
$a = new MyClass;
var_dump(!($a instanceof stdClass));
?>
위의 예는 다음과 유사한 결과를 출력합니다.
bool(true)
마지막으로 instanceof
를 사용하여 변수가 인터페이스를 구현하는 클래스의 인스턴스화된 개체인지 여부를 확인할 수도 있습니다.
예제 #4 인터페이스와 함께 instanceof
사용
<?php
interface MyInterface
{
}
class MyClass implements MyInterface
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof MyInterface);
?>
위의 예는 다음과 유사한 결과를 출력합니다.
bool(true) bool(true)
instanceof
는 일반적으로 리터럴 클래스 이름과 함께 사용되지만 다른 객체 또는 문자열 변수와 함께 사용할 수도 있습니다.
예제 #5 다른 변수와 함께 instanceof
사용하기
<?php
interface MyInterface
{
}
class MyClass implements MyInterface
{
}
$a = new MyClass;
$b = new MyClass;
$c = 'MyClass';
$d = 'NotMyClass';
var_dump($a instanceof $b); // $b is an object of class MyClass
var_dump($a instanceof $c); // $c is a string 'MyClass'
var_dump($a instanceof $d); // $d is a string 'NotMyClass'
?>
위의 예는 다음과 유사한 결과를 출력합니다.
bool(true) bool(true) bool(false)
instanceof
는 테스트 중인 변수가 객체가 아니면 오류를 던지지 않고 단순히 false
를 반환합니다. 그러나 PHP 7.3.0 이전에는 상수가 허용되지 않았습니다.
예제 #6 instanceof
를 사용하여 다른 변수 테스트하기
<?php
$a = 1;
$b = NULL;
$c = imagecreate(5, 5);
var_dump($a instanceof stdClass); // $a is an integer
var_dump($b instanceof stdClass); // $b is NULL
var_dump($c instanceof stdClass); // $c is a resource
var_dump(FALSE instanceof stdClass);
?>
위의 예는 다음과 유사한 결과를 출력합니다.
bool(false) bool(false) bool(false) PHP Fatal error: instanceof expects an object instance, constant given
PHP 7.3.0부터 instanceof
연산자의 왼쪽에 상수가 허용됩니다.
예제 #7 instanceof
를 사용하여 상수 테스트
<?php
var_dump(FALSE instanceof stdClass);
?>
PHP 7.3에서 위 예제의 출력:
bool(false)
instanceof
연산자에는 is_a() 함수가 있는 기능적 변형이 있습니다.