как мне добавить метод в класс 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()
Я пробовал искать в Google некоторые ответы, однако пока мне не повезло, любые советы будут очень признательны.
@LawrenceCherone, у вас есть пример того, как я могу использовать __call()?
перейти по ссылке 3v4l
Вы пытаетесь вызвать функцию с именем «обратный вызов». Вы можете получить свойство, чтобы вызвать его:
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"
используйте __call - 3v4l.org/oBR0L