Функция класса вызова php по имени строки

Как я могу назвать обычную (не статическую) функцию класса по ее имени?

Ниже приведена ошибка, указывающая, что параметр 1 должен быть действительным обратным вызовом. Я не хочу, чтобы функция была статической, я хочу, чтобы она была нормальной функцией, и все примеры, которые я видел до сих пор, были статическими.

class Player { public function SayHi() { print("Hi"); } } $player = new Player(); call_user_func($Player, 'SayHi'); 

Синтаксис callback немного нечетный в PHP. Вам нужно сделать массив. Первый элемент – это объект, а второй – метод.

 call_user_func(array($player, 'SayHi')); 

Вы также можете сделать это без call_user_func :

 $player->{'SayHi'}(); 

Или:

 $method = 'SayHi'; $player->$method(); 

Вам необходимо передать объект и метод вместе как массив:

 call_user_func(array($Player, 'SayHi')); 

См. Обратные вызовы , в частности:

 // Type 3: Object method call $obj = new MyClass(); call_user_func(array($obj, 'myCallbackMethod')); 

Вы все равно создаете объект класса, поэтому вы можете использовать объект для вызова его функции.

 $player = new Player(); $player->SayHi(); 

или использовать обратный вызов

 $player = new Player(); call_user_func(array($player, 'SayHi')); 

$player->SayHi();

Я предпочитаю эту форму.