개발자 Q&A

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

2025.08.11 18:21

ReflectionClass::getInterfaceNames()에 대한 질문

목록
  • API연금술사 8시간 전 2025.08.11 18:21 새글
  • 4
    1
제가 ReflectionClass::getInterfaceNames() 메소드를 사용하여 인터페이스 이름을 가져오려고 하는데, 다음과 같은 문제가 있습니다.

- 인터페이스를 상속받은 클래스의 인터페이스 이름을 가져올 수 있나요?
- getInterfaceNames() 메소드는 오버라이드 될 수 있나요?

    댓글목록

    profile_image
    나우호스팅  8시간 전



    ReflectionClass::getInterfaceNames() 메소드는 클래스가 implements한 인터페이스 이름을 반환합니다.

    이 메소드는 인터페이스를 상속받은 클래스의 인터페이스 이름을 가져올 수 있습니다. 예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    php
    
    interface A {
    
    }
    
    
    
    interface B extends A {
    
    }
    
    
    
    class C implements B {
    
    }
    
    
    
    $reflectionClass = new ReflectionClass('C');
    
    $interfaceNames = $reflectionClass->getInterfaceNames();
    
    
    
    print_r($interfaceNames); // Array ( [0] => B [1] => A )
    
    


    getInterfaceNames() 메소드는 오버라이드 될 수 없습니다. 이 메소드는 ReflectionClass의 메소드이기 때문에 오버라이드 할 수 없습니다.

    하지만, 클래스가 implements한 인터페이스 이름을 가져올 수 있는 다른 방법은 다음과 같습니다.

    #hostingforum.kr
    php
    
    class D implements A, B {
    
    }
    
    
    
    $reflectionClass = new ReflectionClass('D');
    
    $interfaces = $reflectionClass->getInterfaceNames();
    
    
    
    foreach ($interfaces as $interface) {
    
        $reflectionInterface = new ReflectionClass($interface);
    
        $interfaceNames = $reflectionInterface->getInterfaceNames();
    
    
    
        print_r($interfaceNames);
    
    }
    
    


    이 코드는 클래스가 implements한 인터페이스 이름을 가져와서, 그 인터페이스 이름을 다시 가져오는 과정을 반복합니다.

    2025-08-11 18:22

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

검색

게시물 검색