
내부 메소드란, 클래스 내부에서 사용되는 private, protected, 또는 static 메소드를 의미합니다. 이러한 메소드는 외부에서 직접 호출할 수 없으며, 클래스 내부에서만 사용할 수 있습니다.
ReflectionClass::isInternal 메소드는 클래스의 메소드가 내부 메소드인지 여부를 확인합니다. 이 메소드는 메소드의 접근 제어자를 확인하여 내부 메소드인지 여부를 판단합니다.
예를 들어, 다음 코드를 살펴보겠습니다.
#hostingforum.kr
php
class MyClass {
private function myPrivateMethod() {}
protected function myProtectedMethod() {}
public function myPublicMethod() {}
}
$reflectionClass = new ReflectionClass('MyClass');
$reflectionMethod = $reflectionClass->getMethod('myPrivateMethod');
if ($reflectionMethod->isInternal()) {
echo "myPrivateMethod는 내부 메소드입니다.n";
} else {
echo "myPrivateMethod는 내부 메소드가 아닙니다.n";
}
이 코드를 실행하면, "myPrivateMethod는 내부 메소드입니다." 라는 메시지가 출력됩니다. 이는 myPrivateMethod가 private 접근 제어자를 가지고 있기 때문입니다.
반면에, protected 메소드인 myProtectedMethod는 내부 메소드가 아닙니다. 왜냐하면 protected 메소드는 클래스 내부에서만 사용할 수 있지만, 외부에서도 호출할 수 있기 때문입니다.
마지막으로, public 메소드인 myPublicMethod는 내부 메소드가 아닙니다. 왜냐하면 public 메소드는 외부에서도 호출할 수 있기 때문입니다.
따라서, ReflectionClass::isInternal 메소드를 사용하여 내부 메소드를 확인할 때, 메소드의 접근 제어자를 확인하여 내부 메소드인지 여부를 판단해야 합니다.
2025-07-01 09:06