Drupal 内では、drupal_alter() 関数は次のパターンで使用されます。
- モジュール (foo) は、たとえば foo_get() メソッドを提供することによって、何らかのタイプのオブジェクトを生成します。
- オブジェクトを返す前に、foo モジュールはそれに対して drupal_alter() を呼び出します。
- drupal_alter() は、オブジェクトを変更する他のモジュールによって提供されるフックを呼び出します (例: bar_foo_alter()) 。
- 変更されたオブジェクトが返されます。
Drupal では、モジュールが他のモジュールによって作成された html フォームを拡張できるようにするなどの目的で使用されます。Drupal での動作の詳細については、http://erikwebb.net/blog/drupal-design-patterns/hooks をご覧ください。
このデザインパターンに名前はありますか?要約すると、必要な基準は次のとおりです。
- モジュールは、オブジェクトを生成するメソッドを提供します。
- オブジェクトが返される前に、任意の数の他のモジュールがオブジェクトを変更する可能性があります。
- 変更モジュールは、生成モジュールのみに依存します。
- 生成モジュールは変更モジュールに依存しません。