Как передать метод в метод класса PHP?
Пытаюсь передать метод в другой метод класса. Например, с функциями это работает так:
function a($a)
{
$a();
}
function b()
{
echo '1231231';
}
$d = a('b');
Хочу такое сделать с методами класса, но не работает. Пробовал так:
class Test
{
public function c() {
$this->aa($this->b);
}
public function b()
{
echo '1231231';
}
public function aa($a)
{
$a();
}
}
$inst = new Test();
$inst->c();
Есть ли способ решить такую проблему?
Ответы (1 шт):
Автор решения: teran
→ Ссылка
$this->b это обращение к члену класса, объявленному как, например, private $b. Вы же хотите передать ссылку на метод объекта. Поскольку речь идет об обычном (не статичном) методе класса, то передается такая ссылки в виде [$this, 'b']. То есть адрес объекта и метод, который надо вызвать.
В случае статического метода передавать надо метод класса и имя метода, например, [A:classname, 'b'].
Входящий параметр для функций обратного вызова можно описать как callable