PHP 通过构造函数向类添加方法

PHP Adding a method to a class via the constructor

提问人:Cam Parry 提问时间:11/27/2022 更新时间:11/27/2022 访问量:84

问:

我将如何通过其构造函数将方法添加到PHP类中,以便在以后调用?

假设我有一个这样的PHP类:

class Action
{
    public $callback = null;

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

我希望能够像这样调用该方法:

$action = new Action(function($value) {
    // do something with $value;
});

$action->callback('abc');

但是,当我执行上述操作时,我收到此错误:

Call to undefined method Action::callback()

我尝试过在谷歌上搜索一些答案,但到目前为止我还没有太多运气,任何建议将不胜感激。

PHP oop 回调

评论

1赞 Lawrence Cherone 11/27/2022
使用__call - 3v4l.org/oBR0L
0赞 Cam Parry 11/27/2022
@LawrenceCherone,您有如何使用 __call() 的示例吗?
1赞 Lawrence Cherone 11/27/2022
访问 3V4L 链接

答:

1赞 Syscall 11/27/2022 #1

您正在尝试调用名为“callback”的函数。您可以获取属性来调用它:

call_user_func($action->callback, 'abc');

$fn = $action->callback;
$fn('abc');

例:


class Action
{
    public $callback = null;

    public function __construct(callable $callback)
    {
        $this->callback = $callback;
    }
}
$action = new Action(function($value) {
    var_dump($value);
});

call_user_func($action->callback,12); // int(12)

$fn = $action->callback;
$fn('abc'); // string(3) "abc"