php 按字符串名称调用类函数

php
2022-08-30 09:50:45

如何按其名称调用普通(非静态)类函数?

下面给出了一个错误,指出参数 1 必须是有效的回调。我不希望函数是静态的,我希望它是一个正常的函数,到目前为止,我看到的所有示例都是静态的。

class Player
{
    public function SayHi() { print("Hi"); }
}

$player = new Player();

call_user_func($Player, 'SayHi');

答案 1

回调语法在PHP中有点奇怪。你需要做的是做一个数组。第一个元素是对象,第二个元素是方法。

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

您也可以在没有:call_user_func

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

艺术

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

答案 2

您需要将对象和方法作为数组一起传递:

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

请参阅回调,具体如下:

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

推荐