dongwen2794 2011-08-14 20:49
浏览 24
已采纳

从PHP中的类成员调用函数

Say I have the following:

class C {
    private $f;

    public function __construct($f) {
        $this->f = $f;
    }

    public function invoke ($n) {
        $this->f($n); // <= error thrown here
    }
}

$c = new C(function ($m) {
    echo $m;
});

$c->invoke("hello");

The above throws the following error:

Fatal error: Call to undefined method C::f()

And I'm guessing that it's because I'm trying to invoke the callback function $this->f using the same syntax one would invoke an object's member functions.

So what's the syntax that allows you to invoke a function which is stored in a member variable?

  • 写回答

1条回答 默认 最新

  • dousou1967 2011-08-14 20:56
    关注

    You need to use call_user_func:

    public function invoke ($n) {
        call_user_func($this->f, $n);
    }
    

    UPDATE

    Christian points out that call_user_func is very slow, and that this is faster:

    function my_call_user_func($f) {
        $f();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch