
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