हुक क्या हैं? [बन्द है]


15

मैं विभिन्न प्रोग्रामिंग लेखों में इस शब्द को हुक करता रहता हूं। हालाँकि मुझे समझ नहीं आ रहा है कि वे क्या हैं, और उनका उपयोग कैसे किया जा सकता है। इसलिए मैं सिर्फ यह जानना चाहता था कि हुक की अवधारणा क्या है; अगर कोई मुझे कुछ उदाहरणों से जोड़ सकता है, खासकर वेब विकास के संदर्भ में, तो यह बहुत अच्छा होगा।


एक हुक विधि एक अमूर्त वर्ग में एक ठोस विधि है जिसे उपवर्गों द्वारा ओवरराइड किया जा सकता है, लेकिन इसमें सार वर्ग में एक डिफ़ॉल्ट व्यवहार होता है।
13:00 पर gal007

जवाबों:


18

मेरा उत्तर वर्डप्रेस से संबंधित है जो PHP में लिखा गया है, लेकिन यह एक सामान्य विकास मैकेनिक है, इसलिए यह वास्तव में कोई बात नहीं होनी चाहिए, इस तथ्य के बावजूद कि आपने अपने प्रश्न शीर्षक में 'अजगर' डाल दिया है।

हुक के उपयोग का एक अच्छा उदाहरण, संयोग से वेब विकास में, वर्डप्रेस के हुक हैं

उन्हें उचित रूप से नामित किया गया है कि वे एक कार्यक्रम के निष्पादन के कुछ बिंदुओं में 'हुक' करने का एक तरीका देते हैं।

उदाहरण के लिए, wp_head एक 'एक्शन' है जो तब उत्सर्जित होता है जब एक वर्डप्रेस थीम का प्रतिपादन किया जा रहा होता है और यह उस हिस्से पर होता है जहां वह <head>टैग के भीतर के हिस्से को प्रस्तुत करता है । यह कहें कि आप एक ऐसा प्लगइन लिखना चाहते हैं जिसके लिए एक अतिरिक्त स्टाइलशीट, स्क्रिप्ट या कुछ और चाहिए जो सामान्य रूप से उन टैग्स के भीतर हो। जब यह क्रिया उत्सर्जित होती है तो किसी फ़ंक्शन को परिभाषित करके आप इस क्रिया को 'हुक' कर सकते हैं। कुछ इस तरह:

add_action('wp_head', 'your_function');

your_function() कुछ सरल हो सकता है:

function your_function() {
    echo '<link rel="stylesheet" type="text/css" href="lol.css" />';
}

अब, जब वर्डप्रेस कुछ ऐसा करके इस क्रिया का उत्सर्जन करता है do_action('wp_head');, तो वह देखेगा कि ' कार्रवाई में' झुका हुआyour_function() था , इसलिए यह उस फ़ंक्शन को कॉल करेगा ( और यदि कोई लेता है तो इसे किसी भी तर्क को पारित कर सकता है, जैसा कि किसी विशेष हुक के लिए प्रलेखन में परिभाषित किया गया है। )।

लंबी कहानी छोटी: यह आपको एक प्रोग्राम कॉलबैक असाइन करके ज्यादातर मामलों में, उन बिंदुओं में 'हुकिंग' करके प्रोग्राम के निष्पादन के विशिष्ट बिंदुओं पर अतिरिक्त कार्यक्षमता जोड़ने की अनुमति देता है।


2

कभी-कभी पूछने वाले व्यक्ति की पृष्ठभूमि के आधार पर इस प्रश्न का उत्तर उतना ही सरल हो सकता है क्योंकि हुक आमतौर पर एक घटना हैंडलर के लिए एक और शब्द है, जिसके लिए ब्लेनेक ने एक उत्कृष्ट स्पष्टीकरण दिया था।

इस वाक्यांश के उपयोग भी हैं जो तब होते हैं जब आप किसी घटना या कोड को एक प्रक्रिया में इंजेक्ट करते हैं, अन्यथा उदाहरण के लिए मोल्स जैसी घटनाएं नहीं होती हैं ।


धन्यवाद बिल, मोल्स एक .NET अवधारणा की तरह दिखता है, जो मेरे लिए पूरी तरह से विदेशी है, क्या आप कृपया मुझे कुछ pythonic या php या कुछ और सामान्य की ओर इशारा कर सकते हैं।
रासमस

दुर्भाग्य से मैं विशेषज्ञता का दावा करने के लिए उन दो का पर्याप्त उपयोग नहीं करता हूं, लेकिन अगर मैं इसे सही ढंग से पढ़ रहा हूं, तो मेरा मानना ​​है कि stackoverflow.com/questions/156230/… एक समान विचार विमर्श किया जा रहा है, लेकिन मोल्स एक संकलित विधानसभा को हुक कर सकते हैं। एक मिनिपोर्ट ड्राइवर एक और जगह है जिसमें हुक वाक्यांश का उपयोग कभी-कभी किया जाता है। मेरी बात और थी कि "हुक" शब्दावली का उपयोग किसी अन्य तरीके से कभी-कभी किया जा सकता है, पुराने एमएस टेक में वैसे भी, शायद दूसरा उपयोग अजगर पर भी लागू नहीं होता है।
बिल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.