2010-01-08 1 views
4

Пример: У меня есть переменная, какКак динамически вызвать метод в PHP?

$method = "doSomething"; 

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

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

$myObject->$method(); 

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

ответ

10

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

$myObject->$method(); 

Это называется Variable functions


А вот код, который доказывает, что:

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

+0

Может быть, добавить ссылку на переменную 'Functions' в руководстве: http://php.net/manual/en/functions.variable-functions.php – Gordon

+0

@Gordon: Спасибо за предложение! Я отредактировал свой ответ, чтобы добавить эту ссылку, и термин «переменные функции» :-) –

+2

Идеальный ответ, как обычно. См. Мой профиль ;-) – openfrog

4

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

if (method_exists(array($myObject, $method)) { 
    $myObject->$method(); 
} 
+0

Это был бы мой следующий вопрос ;-) отлично. Спасибо чувак. – openfrog

Смежные вопросы