我能找到PHP匿名函数的定义位置吗?

我能找到PHP匿名函数的定义位置吗?,php,reflection,closures,anonymous-function,Php,Reflection,Closures,Anonymous Function,闭包似乎没有完全暴露在反射中。作为检查对象,它似乎没有任何有用的东西: $foo = function ($a, $b) {}; $ref = new ReflectionObject($foo); var_dump($ref->getFileName()); // false 您可以获取匿名函数的参数: $invoker = $ref->getMethod('__invoke'); var_dump($invoker->getParameters()); // "a" an

闭包似乎没有完全暴露在反射中。作为检查对象,它似乎没有任何有用的东西:

$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

有什么想法吗?

我想你要找的是
ReflectionFunction
而不是
ReflectionObject

这是参考资料。 它甚至包括一个
isClosure
方法,并接受闭包作为构造函数参数。:-)

例如:

$callback = function (){ echo 'hello'; };
$r = new ReflectionFunction($callback);
$startLine = $r->getStartLine();
$file = $r->getFileName();
$is_closure = $r->isClosure();

谢谢我只读了部分文档,并假设“name”参数需要一个字符串。(对于未来的访问者)我更新了答案,指出它可以对
\u construct()
参数进行闭包。