मंगलवार, 23 फ़रवरी 2010

हेल्पर फ़ंग्शन – कोड इग्नाइटर

हेल्पर, जैसा कि नाम से ही पता चलता है, विभिन्न कार्यों को करने में आपकी मदत करते हैं. प्रत्येक हेल्पर फ़ाइल एक विशेष प्रकार के फ़ंग्शनों का समूह होती है. जैसे: URL Helpers आपको लिंक बनाने में मदत करते हैं, Form Helpers आपको फ़ार्म के अवयवों को बनाने में मदत करते हैं, Text Helpers विभिन्न प्रकार के पाठ्य संरूपण का काम करने में मदत करते हैं, Cookie Helpers कुकीज़ को बनाने और उन्हे पढ़ने का काम करते हैं, File Helpers आपको फ़ाइलों के साथ काम करने में सहयोग करते हैं, आदि.

कोड इग्नाइटर के अन्य तंत्रों के उलट, हेल्पर आब्जेक्ट ओरिएंटेड रूप में नही लिखे जाते हैं. ये साधारण प्रक्रियात्मक(Procedural) रूप में लिखे जाते हैं. प्रत्येक हेल्पर फ़ंग्शन एक विशिष्ट कार्य को करता है. एक हेल्पर फ़ंग्शन किसी कार्य को करने के लिये दूसरे फ़ंग्शनों पर निर्भर नही रहता है.

सामान्य अवस्था में कोड इग्नाइटर हेल्पर फ़ाइलों को लोड नही करता है, अत: किसी हेल्पर को उपयोग करने के लिये सबसे पहले उसे लोड करना पड़ता है. एक बार लोड होने के बाद ये सभी कंट्रोलरों और व्यूज़ में उपलब्ध हो जाते हैं.

हेल्पर सामान्यत: आपके system/helpers, या system/application/helpers डायरेक्ट्री में रहते हैं. कोड इग्नाइटर सबसे पहले आपकी system/application/helpers डायरेक्ट्री में हेल्परों को खोजता है. यदि यह डायरेक्ट्री उपलब्ध नही होती या वह हेल्पर वहां नही उपलब्ध होता तो कोड इग्नाइटर system/helpers फ़ोल्डर में हेल्परों को खोजता है.

किसी हेल्पर को लोड करना

किसी हेल्पर को लोड करना बहुत ही आसान है. इसके लिये हम निम्न लिखित फ़ंग्शन का प्रयोग करते हैं:

$this->load->helper('name');

यहां name आपकी हेल्पर फ़ाइल का नाम है जिसे बिना .php एक्सटेंशन तथा "helper" वाले हिस्से के लिखा गया है.

उदाहरण के लिये URL Helper फ़ाइल को लोड करने के लिये(जिसका नाम url_helper.php है) आप इस तरीके का इस्तेमाल करेंगे.

$this->load->helper('url');

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

कृपया ध्यान दें: हेल्पर लोड करने वाले फ़ंग्शनों से कभी कोई मान नही प्राप्त किया जा सकता है, अत: कभी इन्हे वैरिएबलों के साथ निर्दिष्ट ना करें. इन्हे बस दिखाये गये तरीके से प्रयोग करें.

एक साथ कई हेल्परों को लोड करना

यदि आप एक से अधिक हेल्परों को एक साथ लोड करना चाहते हैं तो आप इस तरह एक एरे के रूप में लिख सकते हैं:

$this->load->helper( array('helper1', 'helper2', 'helper3') );

हेल्परों को स्वत: लोड करना

यदि आपको लगता है कि कोई विशेष हेल्पर पूरे अनुप्रयोग में उपयोग होगा तो आप कोड इग्नाइटर को इसे स्वत: लोड करने के लिये कह सकते हैं. यह करने के लिये application/config/autoload.php फ़ाइल को खोलें और autoload एरे में उस हेल्पर का नाम भर दें.

किसी हेल्पर को उपयोग में लाना

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

उदाहरण के लिये anchor() फ़ंग्शन के द्वारा व्यू फ़ाइलों में लिंक बनाने के लिये आपको कुछ ऐसा लिखना होगा:

<?php echo anchor('blog/comments', 'Click Here');?>

यहां "Click Here" लिंक का नाम है तथा "blog/comments" "कंट्रोलर/फ़ंग्शन" का URI  है.

हेल्परों को विस्तारित(Extend) करना

हेल्परों को विस्तारित करने के लिये application/helpers/ फ़ोल्डर में अपने पहले से बने हुये हेल्पर के नाम वाली फ़ाइल बनायें, पर उसमें MY_ उपसर्ग लगा दें(इसे विन्यासित किया जा सकता है. नीचे देखें).

यदि आपको पहले से बने हुये हेल्पर में कुछ सुविधायें जोड़नी हों जैसे एक या दो फ़ंग्शन जोड़ना हो या हेल्पर के काम करने का तरीका बदलना हो तो पूरी की पूरी हेल्पर फ़ाइल को अपनी हेल्पर फ़ाइल से बदलना कठिन काम होगा. ऐसी स्थिति में हेल्पर को "extend" करना बेहतर होगा. यहां "extend" शब्द को अस्पष्ट रूप से प्रयोग किया जा रहा है क्योंकि हेल्पर फ़ंग्शन प्रक्रियात्मक रूप में लिखे जाते हैं तथा पारंपरिक प्रोग्रामिंग तकनीक की तरह विस्तारित या "extend" नही किये जा सकते हैं.

उदाहरण के लिये किसी Array Helper को विस्तारित करने के लिये आप application/helpers/MY_array_helper.php नाम से फ़ाइल बनायेंगे तथा किसी फ़ंग्शन को जोडे़ंगे या पहले से बने फ़ंग्शन का उल्लंघन करेंगे.

// any_in_array() is not in the Array Helper, so it defines a new function
function any_in_array($needle, $haystack)
{
    $needle = (is_array($needle)) ? $needle : array($needle);
    foreach ($needle as $item)
    {
        if (in_array($item, $haystack))
        {
            return TRUE;
        }
        }
    return FALSE;
}
// random_element() is included in Array Helper, so it overrides the native function
function random_element($array)
{
    shuffle($array);
    return array_pop($array);
}

अपने स्वयं के उपसर्ग जोड़ना

विस्तारित हेल्परों की फ़ाइलों के नाम में लगने वाले उपसर्ग को लाइब्रेरियों तथा कोर क्लासों को विस्तारित करते वक्त भी उपयोग किया जाता है. अपने स्वयं के उपसर्ग को निर्धारित करने के लिये application/config/config.php फ़ाइल को खोलें तथा इस लाइन को खोजें:

$config['subclass_prefix'] = 'MY_';

कृपया ध्यान दें: कोड इग्नाइटर की मूल लाइब्रेरियों में CI_ उपसर्ग के तौर में प्रयुक्त होता है अत: इन्हे अपने उपसर्ग के तौर पर उपयोग ना करें.

कोई टिप्पणी नहीं:

एक टिप्पणी भेजें

इस ब्लाग में प्रकाशित सामग्री कापीराईट द्वारा सुरक्षित है. बिना अनुमति इसका किसी भी प्रकार से अन्यत्र प्रयोग/प्रकाशन मूल रूप में/बदल कर उपयोग नही किया जा सकता है.

हिंदी में तकनीकी लेखन को प्रोत्साहित करें

please donate अभी तक वेब डेवलपमेंट अथवा प्रोग्रामिंग आदि से संबंधित जानकारी पर अंग्रेजी का एकाधिकार रहा है. भारत में इतने आई टी गुरू होने के बावजूद भारतीय भाषाओं में इस विषय पर लेखन नगण्य है. इस ब्लाग के माध्यम से मैं हिन्दी भाषिओं तक वेब डेवलपमेंट का ज्ञान पहुंचाने की कोशिश कर रहा हूं. अत: आप सभी से अनुरोध है कि हिंदी में तकनीकी लेखन के लिये सहयोग करें
मैं वेबसाइटें भी बनाता हूं. यदि आपको बनवानी हो तो बताएं.

ARCHIVES

इस ब्लॉग में खोजें

फ़ॉलोअर