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
相关产品推荐
相关产品推荐

