
ReflectionFunction::getClosure를 사용하여 클로저를 가져올 때 클로저의 변수를 가져올 수 없는 이유는 클로저가 실행되지 않았기 때문입니다. 클로저는 함수 내에서만 사용할 수 있는 변수를 가지고 있습니다. 따라서 ReflectionFunction::getClosure를 사용하여 클로저를 가져올 때는 클로저가 실행되지 않습니다.
클래스 내 클로저의 변수를 가져올 수 있는 방법은 클로저를 실행하는 것입니다. 클로저를 실행하면 클로저의 변수가 생성되기 때문에 ReflectionFunction::getClosure를 사용하여 클로저의 변수를 가져올 수 있습니다.
클래스 내 클로저의 변수를 가져올 수 있는 방법을 적용한 예제는 다음과 같습니다.
#hostingforum.kr
php
class MyClass {
public function myMethod() {
$closure = function () {
$x = 10; // 클로저 내 변수
return $x;
};
$reflection = new ReflectionFunction('myMethod');
$closure = $reflection->getClosure($this);
$closure(); // 클로저를 실행합니다.
var_dump($closure->getStaticVariables()); // 클로저의 변수를 가져올 수 있습니다.
}
}
$obj = new MyClass();
$obj->myMethod();
클로저를 실행한 후, ReflectionFunction::getClosure를 사용하여 클로저의 변수를 가져올 수 있습니다. `$closure->getStaticVariables()`를 사용하여 클로저의 변수를 가져올 수 있습니다.
2025-04-02 14:25