musoNic80
musoNic80

Reputation: 3696

Can I use a variable to call a method?

Can I call a method when the method name is stored in a variable? What's the syntax? Suppose I have the following PHP code:

class MyClass {
    public $default;

    function index() {
        /* call method named by $this->default */
    }
    function method_1() {}
    function method_2() {}
    ...
}

index() is called by default when the class is initialised if no other method is specifically called.

How can I call one of the methods from within index() using the MyClass->$default property? That is, if I would ordinarily write:

function index() { $this->method_1(); }

can I use my default variable to call the correct method?

Upvotes: 1

Views: 900

Answers (3)

mario
mario

Reputation: 145482

There's also the call_user_func workaround:

call_user_func( array($this,$methodname), $arg...);

Upvotes: 2

Yeroon
Yeroon

Reputation: 3243

Yes you can using this syntax:

$methodname = 'method_1';
$this->$methodname();

Upvotes: 2

Pekka
Pekka

Reputation: 449415

Can i use a variable to call a method?

Yes you can. For example, inside an object:

$method = "method_1";

if (method_exists($this, $method))
 $this->{$method}();

Upvotes: 8

Related Questions