我有以下PHP代码:
function test($callback) {
$parameter = func_get_args()[0]["parameter"];
var_dump$parameter);
}
test(function($var, $var2) {});
调用会生成此错误:
致命错误:无法使用Closure类型的对象作为数组
如何将Closure对象转换为数组?
我尝试过以下事项:
function test($callback) {
$parameter = func_get_args()[0];
$parameter = json_decode(json_encode($parameter), true);
var_dump($parameter);
}
输出:
array(0) {}
和
function test($callback) {
$parameter = func_get_args()[0];
$parameter = (array) $parameter;
var_dump($parameter);
}
输出:
array(1) {
[0]=> object(Closure)#1 (1) {
["parameter"]=> array(2) {
["$var"]=> string(10) ""
["$var2"]=> string(10) ""
}
}
}
我该怎么办?
答案 0 :(得分:1)
你想获得一个包含回调参数的数组吗? 如果您这样做,可以使用Reflection API。
function test() {
$callback = func_get_args()[0];
$rf = new ReflectionFunction($callback);
$params = array();
foreach ($rf->getParameters() as $param) {
$params[] = $param->getName();
}
var_dump($params);
}