개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.14 16:21

ReflectionClass::isInterface와 Interface Class의 차이

목록
  • 백엔드버서커 1일 전 2025.07.14 16:21
  • 6
    1
제가 ReflectionClass::isInterface를 사용하여 인터페이스 클래스를 확인할 때, 인터페이스 클래스가 아닌 일반 클래스를 반환하는 경우가 있습니다.

이러한 경우는 어떤 이유로 발생하는 것일까요?

예를 들어, 다음과 같은 클래스가 있다고 가정해 보겠습니다.

php

interface MyInterface {}



class MyClass implements MyInterface {}



이 경우, ReflectionClass::isInterface를 사용하여 MyClass의 인터페이스 여부를 확인하면?

php

$reflectionClass = new ReflectionClass('MyClass');

var_dump($reflectionClass->isInterface());



이 코드는 false를 반환합니다. 왜 그런가요?

이러한 경우를 더 자세히 설명해 주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 36,366건 / 9 페이지

검색

게시물 검색