Как динамически вызвать метод в PHP? - PullRequest
4 голосов
/ 08 января 2010

Пример: у меня есть переменная типа

$method = "doSomething";

Предположим, у меня есть $ myObject, который знает нестатический, открытый метод doSomething ()

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

$myObject->$method();

Или есть другой / лучший способ?

Ответы [ 2 ]

10 голосов
/ 08 января 2010

Да, вы можете сделать это:

$myObject->$method();

Это называется Переменные функции


И вот код, который доказывает это:

class ClassA {
    public function method() {
        echo 'glop';
    }
}

$a = new ClassA();
$methodName = 'method';
$a->$methodName();

Получает вам этот вывод:

glop

Что означает, что метод был вызван; -)


Другой способ - использовать call_user_func или call_user_func_array:

call_user_func(array($a, $methodName));

Здесь вам это не нужно - но вам придется использовать это, если ваш метод был static, по крайней мере, для PHP <= 5.2 </p>

4 голосов
/ 08 января 2010

Да, однако перед тем, как вызвать его, рекомендуется сначала убедиться, что метод существует:

if (method_exists(array($myObject, $method)) {
    $myObject->$method();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...