我正在尝试将一个方法传递给另一个类方法。例如,对于函数,它的工作方式如下:
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();
有没有办法解决这样的问题?
$this->b
是对声明为的类成员的调用,例如private $b
. 您想传递对对象方法的引用。由于我们谈论的是常规(非静态)类方法,因此此类引用以[$this, 'b']
. 即对象的地址和要调用的方法。在静态方法的情况下,您必须传递类方法和方法名称,例如
[A:classname, 'b']
.回调函数的传入参数可以描述为
callable
https://www.php.net/manual/ru/language.types.callable.php