【问题标题】:&$this in Wordpress add_action callback&$this 在 Wordpress add_action 回调中
【发布时间】:2014-03-13 00:48:27
【问题描述】:

我刚刚开始接触 Wordpress,我正在尝试使用 OOP 技术编写一个非常简单的插件。我一直在关注本教程:http://www.yaconiello.com/blog/how-to-write-wordpress-plugin/。到目前为止,我觉得我理解了大部分发生的事情,但我对这样的陈述有点困惑:

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

阅读Wordpress's add_action()PHP callables 的文档后,我推测第二个参数是类实例的方法。但是我不明白为什么$this 必须通过引用传递

在 PHP 文档中发现了这个关于可调用对象的注释,我怀疑这可能与它有关,但我仍然很难理解其中的区别:

注意:在 PHP 4 中,必须使用引用来创建指向实际对象的回调,而不是它的副本。有关更多详细信息,请参阅说明的参考资料。

如果我有 PHP 5,那么使用 array($this,'init') 是否安全?

可能相关:add_action in wordpress using OOP?

【问题讨论】:

    标签: php wordpress reference


    【解决方案1】:

    是的 - 您可以安全地使用 array($this, 'init');

    这实际上是 PHP 中的“可调用”。它将使用call_user_func()call_user_func_array() 调用(在add_action 方法内部)。

    PHP官方对此类callable的描述:

    实例化对象的方法作为数组传递,其中包含索引 0 处的对象和索引 1 处的方法名称。

    您可以阅读有关可调用对象的更多信息here

    【讨论】:

    • 好的,谢谢!我知道这是一个可调用的。实际上我在我的问题中链接到该页面;)虽然我将其称为回调......我想我最好去编辑。在这种情况下,我只是对 $this 和 &$this 之间的区别产生了学术上的好奇心。哇,这是一个令人困惑的句子。
    猜你喜欢
    • 2015-07-17
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2015-11-12
    • 2012-09-17
    相关资源
    最近更新 更多