[英]Call function directly from PHP array
我试图通过像这样的数组调用PHP函数:
$x = (object) array(
"one" => "value",
"two" => "value2",
"three" => function() {
return "return_value";
}
);
echo($x->three());
由此我收到错误:
<b>Fatal error</b>: Call to undefined method stdClass::three()
我搜索了一下,找不到任何文档,但是我通过
php -l filename.php
没有发现语法错误。
我想知道我要做什么(最终目标是使用数组中的参数调用函数)。 任何人都可以对此有所了解吗?
谢谢
注意,我也尝试过:
function foo() {
return "bar";
}
$x = (object) array(
"foo" => foo
);
...
导致相同的结果。
使用数组而不是对象:
$x = array(
"one" => "value",
"two" => "value2",
"three" => function() {
return "return_value";
}
);
要调用lambda函数,您可以执行以下操作:
echo $x['three']();
如果确实必须使用一个对象,则可以执行以下操作:
$x = array(
"one" => "value",
"two" => "value2",
);
$obj = (object) $x;
$obj->three = function() {
return "return_value";
};
调用函数:
echo $obj->three->__invoke();
您创建的方法类型被归类为匿名函数,并由Closure类表示,因此继承了它的属性,其中包括Amal Murali指定的invoke方法。
您可以通过两种方式调用此函数:
echo $x->three->__invoke();
echo call_user_func( $x->three );
如果需要传递参数,可以调用$x->three->__invoke( $args );
或call_user_func( $x->three, $args1, $args2 );
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.