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



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

$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();

相关内容

  • 没有找到相关文章

最新更新