Могу ли я использовать переменную для вызова метода? - PullRequest
1 голос
/ 25 ноября 2010

Можно ли вызвать метод, когда имя метода хранится в переменной?Какой синтаксис?Предположим, у меня есть следующий код 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(); }

, могу ли я использовать переменную по умолчанию для вызова правильного метода?

Ответы [ 3 ]

8 голосов
/ 25 ноября 2010

Могу ли я использовать переменную для вызова метода?

Да, вы можете.Например, внутри объекта:

$method = "method_1";

if (method_exists($this, $method))
 $this->{$method}();
2 голосов
/ 25 ноября 2010

Существует также call_user_func решение:

call_user_func( array($this,$methodname), $arg...);
2 голосов
/ 25 ноября 2010

Да, вы можете использовать этот синтаксис:

$methodname = 'method_1';
$this->$methodname();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...