Implementasi pengait yang dilakukan dari modul adalah fungsi yang namanya diawali dengan nama pendek modul (juga disebut nama mesin ); dari nama kait, lepas bagian kait , dan ganti dengan nama mesin modul. Misalnya, implementasi yang hook_menu()
dilakukan dari example.module adalah example_menu()
. Jika modulnya adalah example_menu.module, dan fungsinya adalah example_menu()
, itu tidak dianggap sebagai hook_menu()
implementasi untuk example_menu.module.
Ini juga berarti, misalnya, bahwa hook_form_alter()
implementasi di example_form.module tidak example_form_alter()
, tetapi example_form_form_alter()
. Sebagai contoh lain, implementasi hook_form_FORM_ID_alter()
dilakukan untuk mengubah formulir yang dikembalikan user_register_form()
dari example.module tidak example_form_user_register_alter()
, tetapiexample_form_user_register_form_alter()
. (ID formulir adalah user_register_form .)
Secara umum, menggunakan karakter huruf besar dalam nama mesin modul tidak menimbulkan masalah: PHP tidak membuat perbedaan antara myModule_get_value()
, dan mymodule_get_value()
, dan $value = myModule_get_value()
akan memanggil salah satu myModule_get_value()
, atau mymodule_get_value()
.
Meskipun, ada kasus di mana menggunakan karakter huruf besar dalam nama mesin modul akan menyebabkan masalah: ketika mendefinisikan kait pembaruan untuk modul. drupal_get_schema_versions()
, fungsi yang mengembalikan daftar pembaruan yang tersedia, berisi kode berikut.
// 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'];
}
}
Baris terakhir yang dieksekusi drupal_get_schema_versions()
adalah sebagai berikut.
return empty($updates[$module]) ? FALSE : $updates[$module];
Jika nama modul adalah myModule.module, drupal_get_schema_versions('myModule')
hanya akan mengembalikan fungsi dengan nama yang dimulai dengan myModule_update, dan diakhiri dengan angka; fungsi seperti mymodule_update_7120()
tidak akan dimasukkan karena ekspresi reguler yang digunakan dari drupal_get_schema_versions()
case sensitive Ini masih berlaku untuk Drupal 8, karena ekspresi reguler masih sama dengan yang digunakan dalam Drupal 7.