개발자 Q&A

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

2025.06.11 18:47

ReflectionMethod::setAccessible 관련 질문

목록
  • 루트권한 1일 전 2025.06.11 18:47
  • 19
    1
선생님, ReflectionMethod::setAccessible() 메서드를 사용하여 필드나 메서드의 접근성을 변경할 수 있다고 들었습니다. 하지만 setAccessible(true)로 접근성을 열었을 때, private 필드나 메서드에 접근할 수 있게 되는데, 이 때는 해당 필드나 메서드의 이름을 알 수 없을 때 어떻게 접근할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    ReflectionMethod::setAccessible() 메서드는 private 필드나 메서드에 접근할 수 있게 해주지만, 해당 필드나 메서드의 이름을 알 수 없을 때는 어떻게 접근할 수 있을까요?

    이 때는 ReflectionClass를 사용하여 클래스의 모든 필드와 메서드를 가져와서, setAccessible() 메서드를 사용하여 접근성을 열어야 합니다.

    예를 들어, 다음과 같이 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $reflectionClass = new ReflectionClass('클래스명');
    
    $methods = $reflectionClass->getMethods(ReflectionMethod::IS_PRIVATE);
    
    
    
    foreach ($methods as $method) {
    
        $method->setAccessible(true);
    
    }
    
    


    또는, ReflectionClass::getProperties() 메서드를 사용하여 private 필드를 가져올 수도 있습니다.

    #hostingforum.kr
    php
    
    $reflectionClass = new ReflectionClass('클래스명');
    
    $properties = $reflectionClass->getProperties(ReflectionProperty::IS_PRIVATE);
    
    
    
    foreach ($properties as $property) {
    
        $property->setAccessible(true);
    
    }
    
    


    이러한 방법으로, private 필드나 메서드에 접근할 수 있게 됩니다.

    2025-06-11 18:48

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

검색

게시물 검색