PHP Вызов метода экземпляра с помощью call_user_func в том же классе

Я пытаюсь использовать call_user_func для вызова метода из другого метода того же объекта, например

 class MyClass { public function __construct() { $this->foo('bar'); } public function foo($method) { return call_user_func(array($this, $method), 'Hello World'); } public function bar($message) { echo $message; } } 

new MyClass; Должен возвращать «Hello World» …

Кто-нибудь знает правильный способ достичь этого?

Большое спасибо!

Код, который вы опубликовали, должен работать нормально. Альтернативой было бы использовать «переменные функции», подобные этому:

 public function foo($method) { //safety first - you might not need this if the $method //parameter is tightly controlled.... if (method_exists($this, $method)) { return $this->$method('Hello World'); } else { //oh dear - handle this situation in whatever way //is appropriate return null; } } 

Это работает для меня:

 <?php class MyClass { public function __construct() { $this->foo('bar'); } public function foo($method) { return call_user_func(array($this, $method), 'Hello World'); } public function bar($message) { echo $message; } } $mc = new MyClass(); ?> 

Это распечатывается:

 wraith:Downloads mwilliamson$ php userfunc_test.php Hello World 

новый MyClass; Должен возвращать «Hello World» …

Конструктор ничего не возвращает.