개발자 Q&A

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

2025.06.03 21:12

ReflectionParameter::getDeclaringClass와 관련하여 궁금한 점이 있습니다.

목록
  • Express킬러 오래 전 2025.06.03 21:12 인기
  • 180
    1
제가 ReflectionParameter를 사용하여 클래스의 파라미터를 분석하는 중에, getDeclaringClass 메서드에 대한 이해가 부족합니다. 이 메서드는 ReflectionParameter의 클래스를 반환합니다. 하지만 어떤 경우에 null을 반환하고, 어떤 경우에 실제 클래스를 반환하는지 이해가 안 가는데요.

해당 메서드의 동작 방식과 예시를 통해 구체적으로 알려주실 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  오래 전



    ReflectionParameter의 getDeclaringClass 메서드는 파라미터가 선언된 클래스를 반환합니다. 하지만 null을 반환하는 경우는 다음과 같습니다.

    1. 파라미터가 메서드의 매개변수로 선언되지 않은 경우
    2. 파라미터가 메서드의 매개변수로 선언되었지만, 메서드가 정의되지 않은 경우
    3. 파라미터가 메서드의 매개변수로 선언되었지만, 메서드가 private이거나 protected인 경우

    예시를 통해 이해를 돕겠습니다.

    #hostingforum.kr
    php
    
    class A {
    
        public function test($param) {}
    
    }
    
    
    
    $reflectionClass = new ReflectionClass('A');
    
    $reflectionMethod = $reflectionClass->getMethod('test');
    
    $reflectionParameter = $reflectionMethod->getParameters()[0];
    
    
    
    echo $reflectionParameter->getDeclaringClass()->getName(); // A
    
    
    
    class B {
    
        public function test() {}
    
    }
    
    
    
    $reflectionClass = new ReflectionClass('B');
    
    $reflectionMethod = $reflectionClass->getMethod('test');
    
    $reflectionParameter = $reflectionMethod->getParameters()[0];
    
    
    
    echo $reflectionParameter->getDeclaringClass()->getName(); // B
    
    
    
    class C {
    
        private function test($param) {}
    
    }
    
    
    
    $reflectionClass = new ReflectionClass('C');
    
    $reflectionMethod = $reflectionClass->getMethod('test');
    
    $reflectionParameter = $reflectionMethod->getParameters()[0];
    
    
    
    var_dump($reflectionParameter->getDeclaringClass()); // null
    
    


    위 예시에서, 파라미터가 선언된 클래스를 반환하는 경우는 A와 B의 경우입니다. 하지만 C의 경우, private 메서드이기 때문에 null을 반환합니다.

    2025-06-03 21:13

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

검색

게시물 검색