Реалізація гачка, виконаного з модуля, - це функція, назва якої є префіксом короткого імені модуля (також називається ім'ям машини ); з назви гака, зніміть частину гака і замініть його на ім'я машини модуля. Наприклад, реалізація hook_menu()
зроблено з example.module є example_menu()
. Якщо модуль example_menu.module, а функція є example_menu()
, це не вважається hook_menu()
реалізацією для example_menu.module.
Це також означає, наприклад, що hook_form_alter()
реалізація в example_form.module не є example_form_alter()
, але example_form_form_alter()
. В якості іншого прикладу реалізація hook_form_FORM_ID_alter()
зробленої для зміни форми, повернутої user_register_form()
з example.module, не є example_form_user_register_alter()
, алеexample_form_user_register_form_alter()
. (Ідентифікатор форми - це user_register_form .)
Взагалі кажучи, використання великих літер у назві машини модуля не створює проблем: PHP не робить різниць між myModule_get_value()
, та mymodule_get_value()
, і $value = myModule_get_value()
буде викликати або myModule_get_value()
, або mymodule_get_value()
.
Хоча, є випадок, коли використання великих літер у назві машини може викликати проблеми: під час визначення гаків оновлення для модуля. drupal_get_schema_versions()
, функція, яка повертає список доступних оновлень, містить наступний код.
// Prepare regular expression to match all possible defined hook_update_N().
$regexp = '/^(?P<module>.+)_update_(?P<version>\d+)$/';
$functions = get_defined_functions();
// Narrow this down to functions ending with an integer, since all
// hook_update_N() functions end this way, and there are other
// possible functions which match '_update_'. We use preg_grep() here
// instead of foreaching through all defined functions, since the loop
// through all PHP functions can take significant page execution time
// and this function is called on every administrative page via
// system_requirements().
foreach (preg_grep('/_\d+$/', $functions['user']) as $function) {
// If this function is a module update function, add it to the list of
// module updates.
if (preg_match($regexp, $function, $matches)) {
$updates[$matches['module']][] = $matches['version'];
}
}
Останній рядок, виконаний із, drupal_get_schema_versions()
- наступний.
return empty($updates[$module]) ? FALSE : $updates[$module];
Якщо ім'я модуля myModule.module, drupal_get_schema_versions('myModule')
поверне лише функції з іменем, яке починається з myModule_update і закінчується числом; такі функції, як, наприклад mymodule_update_7120()
, не будуть включені, оскільки регулярне вираження, яке використовується drupal_get_schema_versions()
, чутливе до регістру Це все ще стосується Drupal 8, оскільки регулярний вираз все ще той самий, що використовується в Drupal 7.