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

Posted

技术标签:

【中文标题】为啥使用 array($this,\'function\') 而不是 $this->function()【英文标题】:why use array($this,'function') instead of $this->function()为什么使用 array($this,'function') 而不是 $this->function() 【发布时间】:2016-04-06 01:07:07 【问题描述】:

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

add_action('init', array($this, 'function_name'));

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

这是一个示例代码:

class Hello
  function __construct()
    add_action('init', array($this, 'printHello'));
  
  function printHello()
    echo 'Hello';
  

$t = new Hello;

【问题讨论】:

【参考方案1】:

根据您的示例代码,$this->printHello() 在您的 class Hello 之外无法工作。传递对当前对象 ($this) 的引用和方法名称将允许外部代码调用对象的给定方法。

【讨论】:

以上是关于为啥使用 array($this,'function') 而不是 $this->function()的主要内容,如果未能解决你的问题,请参考以下文章

为啥在导入套接字时会出现此错误:“TypeError: _websocket_js__WEBPACK_IMPORTED_MODULE_0__.default.send is not a functio

php ci框架 $this->session->set_userdata 为啥取不到值 session已经默认开启了

为啥第二次调用 glBindBuffer?

为啥 parseInt 使用 Array#map 产生 NaN?

this详解下

为啥我使用此 WinRT 代码得到“'System.Array' 不包含 'AsBuffer' 的定义”?