Имя функции должно быть строкой - PullRequest
2 голосов
/ 02 января 2012

Я получаю эту ошибку, когда пытаюсь позвонить $func('something'):

if(($object instanceof MyObject) && (method_exists($object, 'foo'))){
  $func = array(&$object, 'foo');

}else{
  $func = 'fallback_foo';
}

...

echo $func('something');

Что не так с моим кодом?

Очевидно, я не могу сделать $ func строкой, потому что это метод, специфичный для объекта ... но массив с именем метода и объектом должен работать правильно?

1 Ответ

3 голосов
/ 02 января 2012

Используйте call_user_func() или call_user_func_array(). Оба поддерживают обычные функции и вызовы методов:

echo call_user_func($func, 'something');
echo call_user_func_array($func, array('something'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...