Reputation: 3696
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
Reputation: 145482
There's also the call_user_func workaround:
call_user_func( array($this,$methodname), $arg...);
Upvotes: 2
Reputation: 3243
Yes you can using this syntax:
$methodname = 'method_1';
$this->$methodname();
Upvotes: 2
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