Martti Laine Martti Laine - 6 months ago 24
PHP Question

OOP in PHP: Class-function from a variable?

Is it possible to call functions from class like this:

$class = new class;
$function_name = "do_the_thing";
$req = $class->$function_name();

Something similar solution, this doesn't seem to work?


Yes, it is possible, that is know as variable functions, have a look at this.

Example from PHP's official site:

class Foo
    function Variable()
        $name = 'Bar';
        $this->$name(); // This calls the Bar() method

    function Bar()
        echo "This is Bar";

$foo = new Foo();
$funcname = "Variable";
$foo->$funcname();  // This calls $foo->Variable()


In your case, make sure that the function do_the_thing exists. Also note that you are storing the return value of the function:

$req = $class->$function_name();

Try to see what the variable $req contains. For example this should give you info:

print_r($req); // or simple echo as per return value of your function


Variable functions won't work with language constructs such as echo(), print(), unset(), isset(), empty(), include(), require() and the like. Utilize wrapper functions to make use of any of these constructs as variable functions.