You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何传递类方法作为回调函数而非匿名函数?

PHP类成员方法作为回调函数的正确传递方式

在PHP中,直接传递$this->some_callback这种形式无法正确将类实例方法作为回调参数,你需要使用数组格式来指定类方法回调,这是PHP官方定义的类方法回调标准写法。

正确写法示例

将原代码中的错误调用:

new BlaBlaLibrary($this->some_callback);

修改为:

new BlaBlaLibrary([$this, 'some_callback']);

完整修改后的代码

class Fruit {
  public $name;
  public $color;

  function set_name($name) {
    $this->name = $name;

    // 正确传递类实例方法作为回调
    new BlaBlaLibrary([$this, 'some_callback']);
            
  }

  function some_callback() {
    // 这里编写你的回调逻辑
    echo "当前水果:" . $this->name;
  }
}

$f = new Fruit();
$f->set_name("apple");

补充:静态方法的回调传递

如果是类的静态方法,回调格式为[类名, '静态方法名']或者[self::class, '静态方法名'],示例:

class Fruit {
  public static function static_callback() {
    // 静态方法逻辑
  }

  function some_method() {
    new BlaBlaLibrary([self::class, 'static_callback']);
  }
}

内容的提问来源于stack exchange,提问作者Hey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 06:27:08