将Class方法注册为钩子回调


16

我不确定是否正确执行了此操作。

据我了解:

如果我有一个foo类和一个静态方法栏,则可以通过将数组array("foo","bar")作为函数名称传递来将其注册为回调。

如果我在$ foo中有一个类的实例,并且想调用方法栏,则可以传递array array($foo,'bar')

如果我需要在类本身内部注册一个动作,它可以工作array($this,'bar')吗?


3
测试会比问问题快吗?;)是的,您可以这样做。
fuxia

2
测试可以帮助您,但有时您也会寻求反馈。我认为实际提出这个问题是可以的,而且有一条规则可以质疑OP的动机... :)
hakre 2011年

Answers:


11

如果我需要在类本身内部注册一个动作,它可以工作array($this, 'bar')吗?

是的,它有效。$thisDocs指的是回调所需的具体实例。就像$foo您给出的示例一样。只是$this有点特别,但是它表示的基本相同,并且可以完美地与PHP回调一起使用。

额外:

如果我有一个foo类和一个静态方法栏,则可以通过将数组array("foo","bar")作为函数名称传递来将其注册为回调。

是的,您可以这样做,对于静态函数,您也可以将其写为字符串而不是数组::foo::bar,请参阅Callbacks Docs。可能会派上用场。


1

对于静态方法,您还可以执行以下操作:

['foo','bar'] 

当以下给出未定义的类常量'bar'时

foo::bar

示例-在为$ control_callback指定时 wp_add_dashboard_widget

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.