Можно ли вызвать метод, когда имя метода хранится в переменной? Что такое синтаксис? Предположим, у меня есть следующий код PHP:
class MyClass { public $default; function index() { /* call method named by $this->default */ } function method_1() {} function method_2() {} ... }
index()
вызывается по умолчанию, когда класс инициализируется, если другой метод не вызван.
Как я могу вызвать один из методов из index()
используя свойство MyClass->$default
? То есть, если бы я обычно писал:
function index() { $this->method_1(); }
могу ли я использовать переменную по умолчанию для вызова правильного метода?
Могу ли я использовать переменную для вызова метода?
Да, ты можешь. Например, внутри объекта:
$method = "method_1"; if (method_exists($this, $method)) $this->{$method}();
Да, вы можете использовать этот синтаксис:
$methodname = 'method_1'; $this->$methodname();
Существует также метод обхода call_user_func :
call_user_func( array($this,$methodname), $arg...);