クラスメソッドをフックコールバックとして登録する


16

これを正しく行ったかどうかはわかりません。

私が理解したように:

クラスfooと静的メソッドバーがある場合array("foo","bar")、関数名として配列を渡すことでコールバックとして登録できます。

$ fooにクラスのインスタンスがあり、メソッドbarを呼び出したい場合、配列を渡します array($foo,'bar')ます。

クラス自体にアクションを登録する必要がある場合、それは動作しarray($this,'bar')ますか?


3
テストは質問をするよりも速くありませんか?;)はい、これを行うことができます。
FUXIA

2
テストが役立ちますが、時にはフィードバックも探します。実際に質問しても大丈夫だと思います
。OPの

回答:


11

クラス自体にアクションを登録する必要がある場合、それは動作しarray($this, 'bar')ますか?

はい、動作します。$thisドキュメントは、コールバックに必要な具体的なインスタンスを参照しています。それは$fooあなたが与える例とまったく同じです。それ$thisはもう少し特別ですが、基本的に同じことを表しており、PHPのコールバックでも問題なく動作します。

追加:

クラスfooと静的メソッドバーがある場合array("foo","bar")、関数名として配列を渡すことでコールバックとして登録できます。

はい、そうすることができます。静的関数については、配列の代わりに文字列として記述することもできます:Callbacks Docsをfoo::bar参照してください。便利かもしれません。


1

静的メソッドの場合、これも実行できます。

['foo','bar'] 

以下がUndefined class constant 'bar'を与える場合:

foo::bar

例-$ control_callbackを指定するとき wp_add_dashboard_widget

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.