web-dev-qa-db-ja.com

フックコールバックとしてのClassメソッドの登録

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

私が理解しているように:

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

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

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

14

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

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

追加:

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

はい、できます。静的関数の場合は、配列ではなく文字列としても記述できます。foo::barCallbacksを参照してください。 ドキュメント 。便利かもしれません。

9
hakre

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

['foo','bar'] 

以下が 未定義のクラス定数 'bar' を与えるとき - /:

foo::bar

例 - wp_add_dashboard_widgetに$ control_callbackを指定した場合

1
William Turrell