闭包似乎并没有完全暴露在反射中。在作为一个对象进行检查时,它似乎没有任何用处:
$foo = function ($a, $b) {};
$ref = new ReflectionObject($foo);
var_dump($ref->getFileName()); // false
您可以获取匿名函数的参数:
$invoker = $ref->getMethod('__invoke');
var_dump($invoker->getParameters()); // "a" and "b"!
但不是定义的地方:
var_dump($invoker->getFileName()); // false
有任何想法吗?