मॉड्यूल से किए गए हुक का कार्यान्वयन एक फ़ंक्शन है जिसका नाम मॉड्यूल शॉर्ट नाम (जिसे मशीन का नाम भी कहा जाता है ) के साथ उपसर्ग किया जाता है ; हुक नाम से, हुक भाग को हटा दें , और इसे मॉड्यूल मशीन के नाम से बदल दें। उदाहरण के लिए, 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_form_user_register_alter()
example_form_user_register_form_alter()
। (फॉर्म आईडी user_register_form है ।)
सामान्य शब्दों में, मॉड्यूल मशीन नाम पर बड़े अक्षरों का उपयोग समस्या पैदा नहीं करता है: पीएचपी के बीच मतभेद पड़ता है नहीं 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 में उपयोग की जाती है।