使用私有方法作为类中的操作回调

时间:2014-06-26 作者:tommyf

我已经创建了一个类,我想在其中从__construct 方法作为操作回调。

当我想使用公共方法时,我可以通过以下方式访问它:

add_action( \'init\', array( $this, \'action_callback\' ) );
但是,当方法是私有的时,这会导致错误。我也尝试过,但没有成功:

add_action(\'init\', $this->action_callback() );
如何访问私有方法?

该类看起来像:

class My_class {
    public function __construct() {
        add_action( \'init\', array( $this, \'action_callback\' ) );
    }

    private function action_callback() {
        // do something
    }
}

1 个回复
最合适的回答,由SO网友:engelen 整理而成

无法通过操作或筛选器调用私有方法。呼叫时add_actionadd_filter, WordPress将回调添加到特定操作或筛选器的回调列表中。那么,什么时候do_actionapply_filters 被调用,WordPress使用call_user_func_array 调用链接的函数和方法。像call_user_func_array 不是从类内调用的,它不能调用该类的私有方法。

此外,没有合适的方法来真正保持方法的私有性,即使您可以向类中添加一个单独的(public)方法,将其添加为对操作的回调,并让它调用私有方法。然而,在这样做的过程中,您失去了方法私有的真正概念。

结束

相关推荐

theme functions (hooks)

WordPress已经提出了这个问题,但没有答案。我只是想在这个论坛上试试,如果有人知道的话,因为我也有同样的问题。要使用jquery滑块编辑我的主题,如何转到该脚本?,显示“$主题->挂钩(\'content\\u before\');”在content div标记中。有人能帮忙吗?我的主题索引。php包含以下内容<div id=\"main\"> <?php $theme->hook(\'main_before\'); ?> &#x