call_user_func() expects parameter 1 to be a valid callback call_user_func() expects parameter 1 to be a valid callback php php

call_user_func() expects parameter 1 to be a valid callback


$this->var is evaluating to printHi in your example. However, when you are calling a method of a class, you need to pass the callback as an array where the first element is the object instance and the second element is the function name:

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

Here is the documentation on valid callbacks: http://www.php.net/manual/en/language.types.callable.php


Alternatively to Omar's answer, you can also make printHi() a class static function, so you then can call it from call_user_func('A::printHi') , like this:

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();

See live example