PHP의 is_a() 함수는 주어진 객체가 특정 클래스의 인스턴스이거나, 해당 클래스를 부모 클래스로 상속받고 있는지 확인하는 데 사용됩니다. 조건이 맞으면 TRUE를 반환하고, 그렇지 않으면 FALSE를 반환합니다.
이 함수는 인터페이스(interface) 구현 여부도 함께 판별할 수 있어, 타입 검사와 다형성 검증에 유용하게 활용됩니다.
문법(Syntax)
is_a(object, class)
매개변수(Parameters)
object − 검사할 대상 객체입니다.
class − 확인하려는 클래스의 이름입니다.
반환 값(Return)
객체가 해당 클래스의 인스턴스이거나 그 클래스를 부모로 상속받은 경우 TRUE를 반환하며, 그렇지 않은 경우 FALSE를 반환합니다.
예제(Example)
다음은 is_a() 함수의 기본적인 사용 예시입니다.
<?php
interface ClassOne {
public function Demo();
}
class ClassTwo implements ClassOne {
public function Demo () {
print "Demo";
}
}
$obj = new ClassTwo();
if(is_a($obj, 'ClassOne')) {
echo "Correct!";
} else {
echo "Incorrect!";
}
?>출력 결과(Output)
Correct!
참고 사항
위 예제에서 $obj는 ClassTwo의 인스턴스이지만, ClassTwo가 ClassOne 인터페이스를 구현하고 있으므로 is_a() 함수는 TRUE를 반환합니다.
또한 PHP 5.3.0부터는 instanceof 연산자로도 동일한 검사를 수행할 수 있습니다. 다만 instanceof는 클래스 이름을 직접 작성해야 하는 반면, is_a()는 문자열 형태의 클래스 이름을 사용할 수 있다는 차이점이 있습니다.