拡張機能でフックを作成する方法は?

自分の内線で特定のイベントが発生したときに他の人に何かをするチャンスを与えたい。

だから私の拡張機能で既存のフックを使いたくないのですが、私は拡張機能が呼び出す新しいフックを作成したいと思っています。

I couldn’t find anything in the developers’ guide about this. Looking at
the source makes me think that maybe I should be doing something
with CRM_Utils_Hook or perhaps
Civi::dispatcher()->dispatch('hook_my_new_hook',
$some_event_object)
?

これを行うための標準化された方法はありますか?良い例はありますか?

ベストアンサー

Ericの答えのコード例のリンクのおかげで、フックを提供する方法の簡略化した例(
my_new_hook )は、 $ the_argument
という1つの引数をとります。

CRM_Utils_Hook::singleton()->invoke(
  1, $the_argument,
  $dummy, $dummy, $dummy, $dummy, $dummy,
  'my_new_hook');                                                                      

次に、他の拡張機能には、

function myextension_my_new_hook($arg) {
  do_something_with($arg);
}

$ dummy
は変数を渡す必要があるからです(参照渡しされているので)。しかし、このフックは必要ありません。 2つの引数をとったフックがある場合は、
1 の代わりに 2 を使用し、最初の $ dummy
議論など6。

Nb。このコードはCiviCRM 4.5+を前提としていますが、当時より古いものは使用していないことは明らかです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です