如何在ReflectionFunction中访问已在闭包中使用use()传递的参数

时间:2017-07-03 14:10:33

标签: php

最近,我一直面临通过ReflectionFunction访问参数的问题,这些参数已通过use()构造传递给闭包。

示例:

$var = 'test';
$var2 = 'test2';
$func = function()use($var,$var2) {
    echo $var;
};

$ref = new ReflectionFunction($func);
// Access the parameters here

我将如何继续解决这个问题?

1 个答案:

答案 0 :(得分:2)

可以通过访问$ref->getStaticVariables()来解决。

示例:

<?php


$var = 'test';
$var2 = 'test2';
$func = function()use($var,$var2) {
    echo $var;
};

$ref = new ReflectionFunction($func);
var_dump($ref->getStaticVariables());

输出:

  

array(2){     [ “变种”] =&GT;     string(4)“test”     [ “VAR2”] =&GT;     string(5)“test2”   }

工作测试用例:https://3v4l.org/hDl07

参考getStaticVariables()http://php.net/manual/de/reflectionfunctionabstract.getstaticvariables.php