खोज…


हुक को सक्षम करना

हुक फ़ीचर को विश्वव्यापी रूप से सक्षम / अक्षम किया जा सकता है जो निम्न मद को application/config/config.php फ़ाइल में सेट करके किया जा सकता है:

$config['enable_hooks'] = TRUE;

एक हुक को परिभाषित करना

हुक application/config/hooks.php फाइल में परिभाषित किए गए हैं। प्रत्येक हुक इस प्रोटोटाइप के साथ एक सरणी के रूप में निर्दिष्ट किया गया है

$hook['pre_controller'] = array(
        'class'    => 'MyClass',
        'function' => 'Myfunction',
        'filename' => 'Myclass.php',
        'filepath' => 'hooks',
        'params'   => array('beer', 'wine', 'snacks')
);

सरणी सूचकांक उस विशेष हुक बिंदु के नाम से संबंधित है जिसे आप उपयोग करना चाहते हैं। उपरोक्त उदाहरण में, हुक बिंदु pre_controller । हुक बिंदुओं की एक सूची नीचे पाई गई है। निम्नलिखित मदों को आपके सहयोगी हुक सरणी में परिभाषित किया जाना चाहिए:

वर्ग उस वर्ग का नाम जिसे आप आमंत्रित करना चाहते हैं। यदि आप एक वर्ग के बजाय एक प्रक्रियात्मक फ़ंक्शन का उपयोग करना पसंद करते हैं, तो इस आइटम को खाली छोड़ दें।

फ़ंक्शन वह फ़ंक्शन (या विधि) नाम जिसे आप कॉल करना चाहते हैं।

अपने वर्ग / समारोह युक्त फ़ाइल नाम फ़ाइलनाम।

फ़ाइल-पथ आपकी स्क्रिप्ट वाली निर्देशिका का नाम।

कोई भी पैरामीटर आप अपनी स्क्रिप्ट को पारित करने के लिए इच्छा पैरामीटर। यह आइटम वैकल्पिक है।

हुक अंक

pre_system

सिस्टम के निष्पादन के दौरान बहुत पहले ही कॉल किया गया था। केवल बेंचमार्क और हुक क्लास को इस बिंदु पर लोड किया गया है। कोई रूटिंग या अन्य प्रक्रियाएं नहीं हुई हैं।

pre_controller

आपके किसी भी नियंत्रक को तुरंत बुलाया जा रहा है। सभी बेस क्लास, रूटिंग और सुरक्षा जांच की गई है।

post_controller_constructor

आपके नियंत्रक के तुरंत बाद कॉल किया जाता है, लेकिन किसी भी विधि से पहले हो रहा है।

post_controller

आपके नियंत्रक के पूरी तरह से निष्पादित होने के तुरंत बाद कॉल किया जाता है।

display_override

सिस्टम निष्पादन के अंत में वेब ब्राउजर को अंतिम रूप देने के लिए उपयोग की जाने वाली _display() विधि को ओवरराइड करता है। यह आपको अपनी स्वयं की प्रदर्शन पद्धति का उपयोग करने की अनुमति देता है। ध्यान दें कि आपको $this->CI =& get_instance() साथ CI सुपर-ऑब्जेक्ट को संदर्भित करना $this->CI =& get_instance() और फिर अंतिम रूप से उपलब्ध डेटा $this->CI->output->get_output() को कॉल करके उपलब्ध होगा।

cache_override

आउटपुट लाइब्रेरी में _display_cache() विधि के बजाय अपनी स्वयं की विधि को कॉल करने में सक्षम करता है। यह आपको अपने स्वयं के कैश डिस्प्ले तंत्र का उपयोग करने की अनुमति देता है।

post_system

अंतिम रेंडर किए गए पेज को ब्राउज़र में भेजे जाने के बाद कॉल किया जाता है, सिस्टम के निष्पादन के अंत में अंतिम डेटा ब्राउज़र को भेजे जाने के बाद।

CodeIgniter का उपयोग करके प्री कंट्रोलर हुक उदाहरण

application/hooks फ़ोल्डर में, Blocker.php नाम के साथ एक फ़ाइल Blocker.php और नीचे दिए गए कोड को पेस्ट करें।

<?php
class Blocker {

    function Blocker(){
    }
    
    /**
     * This function used to block the every request except allowed ip address
     */
    function requestBlocker(){
        
        if($_SERVER["REMOTE_ADDR"] != "49.248.51.230"){
            echo "not allowed";
            die;
        }
    }
}
?>

application/config/hooks.php , निम्नलिखित हुक की घोषणा करें।

$hook['pre_controller'] = array(
        'class'    => 'Blocker',
        'function' => 'requestBlocker',
        'filename' => 'Blocker.php',
        'filepath' => 'hooks',
        'params'   => ""
);

application/config/config.php , निम्न मान को सत्य के रूप में सेट करें

एक हुक को परिभाषित करना

हुक application/config/hooks.php फाइल में परिभाषित किए गए हैं। प्रत्येक हुक इस प्रोटोटाइप के साथ एक सरणी के रूप में निर्दिष्ट किया गया है:

$hook['pre_controller'] = array(
      'class'    => 'MyClass',
      'function' => 'Myfunction',
      'filename' => 'Myclass.php',
      'filepath' => 'hooks',
      'params'   => array('bread', 'wine', 'butter')
);
  • CLASS - वह वर्ग जिसे आप प्रोसेस करना चाहते हैं यदि यह प्रक्रियात्मक कोड है तो इसे खाली छोड़ दें।
  • FUNCTION - वह फ़ंक्शन नाम जिसे आप कॉल करना चाहते हैं।
  • FILENAME - फ़ाइल का नाम जिसमें आपकी कक्षा / फ़ंक्शन है।
  • FILEPATH - हुक फ़ाइल का स्थान।
  • यदि आवश्यक हो तो PARAMS पैरामीटर


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow