Как я могу назвать обычную (не статическую) функцию класса по ее имени?
Ниже приведена ошибка, указывающая, что параметр 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();
Я предпочитаю эту форму.