개발자 Q&A

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

2025.07.09 10:00

ReflectionMethod::isPublic 관련 질문내용

목록
  • Express킬러 10일 전 2025.07.09 10:00 인기
  • 386
    1
ReflectionMethod::isPublic 메소드 사용에 대한 질문

제가 ReflectionMethod::isPublic 메소드를 사용하여 메소드의 접근제어자를 확인하려고 하는데, 메소드가 private 인 경우 true를 반환하는 것이 맞는지 궁금합니다.

예를 들어, 다음 코드를 살펴보겠습니다.

php

class Test {

    public function publicMethod() {}

    private function privateMethod() {}

}



$reflectionMethod = new ReflectionMethod('Test', 'publicMethod');

echo $reflectionMethod->isPublic() ? 'true' : 'false'; // true



$reflectionMethod = new ReflectionMethod('Test', 'privateMethod');

echo $reflectionMethod->isPublic() ? 'true' : 'false'; // true



위 코드에서, privateMethod의 접근제어자는 private입니다. 하지만 isPublic 메소드는 true를 반환하는 것을 볼 수 있습니다.

이러한 경우, private 메소드는 접근제어자가 private 인 것이 맞는지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  10일 전



    ReflectionMethod::isPublic 메소드는 메소드가 public 인지 아닌지를 확인하는 메소드입니다. 이 메소드는 메소드의 접근제어자를 확인하는 것이 아니라, 메소드가 public 인지 아닌지를 확인하는 것입니다.

    public 메소드는 외부에서 호출할 수 있는 메소드입니다. private 메소드는 외부에서 호출할 수 없는 메소드입니다. 하지만, ReflectionClass를 사용하여 private 메소드를 호출할 수는 있습니다.

    따라서, ReflectionMethod::isPublic 메소드는 private 메소드의 경우 false를 반환하는 것이 맞습니다. 하지만, 위 코드에서 private 메소드의 경우 true를 반환하는 것을 볼 수 있습니다. 이는 PHP 7.0 이상에서 ReflectionMethod::isPublic 메소드가 변경된 결과입니다. PHP 7.0 이상에서는 private 메소드의 경우 true를 반환합니다.

    이러한 변경은 PHP 7.0에서 Reflection API가 개선되면서 발생했습니다. 이전 버전의 PHP에서는 private 메소드의 경우 false를 반환했습니다. 하지만, 현재 버전의 PHP에서는 private 메소드의 경우 true를 반환합니다.

    따라서, private 메소드는 접근제어자가 private 인 것입니다. 하지만, ReflectionMethod::isPublic 메소드는 private 메소드의 경우 true를 반환하는 것을 볼 수 있습니다.

    2025-07-09 10:01

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

검색

게시물 검색