我已经创建了一个类,我想在其中从__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
}
}
最合适的回答,由SO网友:engelen 整理而成
无法通过操作或筛选器调用私有方法。呼叫时add_action
或add_filter
, WordPress将回调添加到特定操作或筛选器的回调列表中。那么,什么时候do_action
或apply_filters
被调用,WordPress使用call_user_func_array
调用链接的函数和方法。像call_user_func_array
不是从类内调用的,它不能调用该类的私有方法。
此外,没有合适的方法来真正保持方法的私有性,即使您可以向类中添加一个单独的(public)方法,将其添加为对操作的回调,并让它调用私有方法。然而,在这样做的过程中,您失去了方法私有的真正概念。