Php call_user_func()要求参数1为有效回调

Php call_user_func()要求参数1为有效回调,php,dictionary,Php,Dictionary,我只是在玩PHP中的call_user_func函数,在运行以下简单代码时出现以下错误: <?php class A { public $var; private function printHi() { echo "Hello"; } public function __construct($string) { $this->var = $string; }

我只是在玩PHP中的call_user_func函数,在运行以下简单代码时出现以下错误:

<?php


class A
{

    public $var;
    private function printHi()
    {

        echo "Hello";   

    }

    public function __construct($string)
    {
        $this->var = $string;   


    }

    public function foo()
    {

        call_user_func($this->var); 

    }

}

$a = new A('printHi');
$a->foo();


?>


我知道如果我在类之外创建一个名为printHi的函数,它可以正常工作,但我指的是类的print hi,不确定为什么没有注册“this”。

$this->var
在您的示例中计算为
printHi
。但是,在调用类的方法时,需要将回调作为数组传递,其中第一个元素是对象实例,第二个元素是函数名:

call_user_func(array($this, $this->var));

以下是关于有效回调的文档:

除了Omar的答案之外,您还可以将
printHi()
设置为类静态函数,这样您就可以从
call\u user\u func('a::printHi')
调用它,如下所示:

class A
{

    public $var;
    public static function printHi()
    {

        echo "Hello";   

    }

    public function __construct($string)
    {
        $this->var = $string;   


    }

    public function foo()
    {

        call_user_func($this->var); 

    }

}

$a = new A('A::printHi');
$a->foo();
请参阅调用用户函数数组(数组($this,'printHi')、数组($arg1,$arg2))