为什么使用 array($this,'function') 而不是 $this->function()

Bla*_*her 5 php arrays wordpress class

我正在检查一个 WordPress 插件,我在一个类的构造函数中看到了这个函数:

add_action('init', array($this, 'function_name'));
Run Code Online (Sandbox Code Playgroud)

我搜索了一下,发现这array($this, 'function_name')是一个有效的回调。我不明白的是:为什么使用这种方法,而不是使用$this->function_name();

这是示例代码:

class Hello{
  function __construct(){
    add_action('init', array($this, 'printHello'));
  }
  function printHello(){
    echo 'Hello';
  }
}
$t = new Hello;
Run Code Online (Sandbox Code Playgroud)

max*_*xhb 2

从您的示例代码来看,$this->printHello()在您的class Hello. 传递对当前对象 ($this) 的引用和方法名称将允许外部代码调用对象的给定方法。