
ReflectionClass::isInterface는 클래스가 인터페이스인지 아닌지를 확인하는 메서드입니다. 하지만, 인터페이스를 상속받는 일반 클래스는 인터페이스라고 간주되지 않습니다.
예를 들어, 다음과 같은 클래스가 있다고 가정해 보겠습니다.
#hostingforum.kr
php
interface MyInterface {}
class MyClass implements MyInterface {}
이 경우, ReflectionClass::isInterface를 사용하여 MyClass의 인터페이스 여부를 확인하면 false를 반환합니다. 이유는 MyClass가 인터페이스를 상속받은 일반 클래스이기 때문입니다.
인터페이스는 클래스가 implements 키워드를 사용하여 인터페이스를 상속받을 수 있습니다. 하지만, 인터페이스를 상속받은 일반 클래스는 인터페이스라고 간주되지 않습니다.
따라서, ReflectionClass::isInterface를 사용하여 인터페이스 여부를 확인할 때, 인터페이스를 상속받은 일반 클래스를 반환하는 경우가 발생할 수 있습니다.
인터페이스 여부를 확인할 때, ReflectionClass::isInterface를 사용하는 대신, instanceof 연산자를 사용하는 것이 더 안전하고 올바른 방법입니다.
#hostingforum.kr
php
$reflectionClass = new ReflectionClass('MyClass');
var_dump($reflectionClass->getName() == 'MyInterface'); // false
var_dump($reflectionClass->getName() == 'MyClass'); // true
2025-07-14 16:22