dtgr3392 2014-03-04 17:45
浏览 48
已采纳

直接从PHP数组调用函数

I am trying to call a PHP function via an array like so:

$x = (object) array(
    "one" => "value",
    "two" => "value2",
    "three" => function() {
        return "return_value";
    }
);

echo($x->three());

From this I receive the error:

<b>Fatal error</b>:  Call to undefined method stdClass::three()

I've searched a bit and cannot find any documentation on this, however I ran this through

php -l filename.php

which found no syntax errors.

I would like to know if what I'm trying to do is possible (end goal is to call a function with parameters from an array). Is anybody able to shed some light on this?

Thanks

Note, I have also tried:

function foo() {
    return "bar";
}
$x = (object) array(
    "foo" => foo
);
...

which leads to the same result.

  • 写回答

2条回答 默认 最新

  • doushuangdui5419 2014-03-04 18:23
    关注

    The type of method you created is classified as an anonymous function and is represented by the Closure class and thus inherits its properties, which includes the invoke method as specified by Amal Murali.

    You have two ways of calling this function:

    1. echo $x->three->__invoke();
    2. echo call_user_func( $x->three );

    If you need to pass arguments, you can call $x->three->__invoke( $args ); or call_user_func( $x->three, $args1, $args2 );.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题