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

क्रोड़ तंत्र की क्लासों को बनाना – कोड इग्नाइटर

हर बार जब कोड इग्नाइटर चालू होता है तब कुछ आधारभूत क्लासें फ़्रेमवर्क के हिस्से के तौर पर स्वत: प्रारंभ हो जाती हैं. कोड इग्नाइटर में यह संभव है कि आप चाहें तो इन क्रोड़ तंत्र की क्लासों अपनी बनाई हुई क्लासों से बदल दें. इसके अलावा आप चाहें तो क्लासों के मूल संस्करण को विस्तारित (Extend) भी कर सकते हैं.

ज्यादातर उपयोगकर्ताओं को ऐसा करने की जरूरत नही पड़ेगी. पर यह विकल्प उन लोगों के लिये है जो कि कोड इग्नाइटर के क्रोड़ में बदलाव लाना चाहते हैं.

तंत्र की क्लासों की सूची

हर बार जैसे ही कोड इग्नाइटर चालू होता है निम्नलिखित क्रोड़ तंत्र की फ़ाइलें शुरू हो जाती हैं:

  • Benchmark
  • Config
  • Controller
  • Exceptions
  • Hooks
  • Input
  • Language
  • Loader
  • Log
  • Output
  • Router
  • URI

क्रोड़ क्लासों को बदलकर दूसरी रखना

क्रोड़ तंत्र में वास्तविक क्लासों की बजाय अपनी क्लासों को प्रयोग करने के लिये अपने संस्करण को application/libraries में रखें.

application/libraries/some-class.php

यदि यह डायरेक्ट्री ना उपस्थित हो तो आप इसे बना भी सकते हैं.

इस फ़ोल्डर में कोई भी फ़ाइल जिसका नाम ऊपर बताई गई लिस्ट के समान होगा उसे वास्तविक क्रोड़ क्लास की बजाय उपयोग किया जायेगा.

कृपया ध्यान दें कि आपकी क्लास के नाम के आगे CI उपसर्ग के तौर पर लिखा होना चाहिये. उदाहरण के लिये यदि आपकी फ़ाइल का नाम Input.php है तो क्लास का नाम यह होगा:

class CI_Input {
}

क्रोड़ क्लासों को विस्तारित करना

यदि आप पहले से बनी लाइब्रेरी में कुछ और सुविधायें जोड़ना चाहते हैं जैसे कि कुछ फ़ंग्शन जोड़ना तो ऐसी स्थिति में क्लास को विस्तारित(Extend) करना ही बेहतर रहेगा. क्लास को विस्तारित करना क्लास को बदलने से जैसा ही है पर कुछ अपवादों को छोड़कर:

  • क्लास की घोषणा(Declaration) हमेशा अपनी मूलजनक क्लास(parent class) से विस्तारित होनी चाहिये.
  • आपकी नई क्लास तथा उसके फ़ाइल का नाम हमेशा MY_ उपसर्ग के साथ होना चाहिये (इसे बदला जा सकता है. नीचे देखें.).

उदाहरण के लिये मूल Input क्लास को विस्तारित करने के लिये आप एक application/libraries/MY_Input.php नाम की एक फ़ाइल बनायेंगे, तथा उसमें अपनी क्लास की घोषणा इस प्रकार करेंगे:

class MY_Input extends CI_Input {
}

कृपया ध्यान दें: यदि आपको अपनी क्लास में कंस्ट्रक्टर की जरूरत हो तो तो उसे अपने मूलजनक कंस्ट्रक्टर से विस्तारित करना ना भूलें:

class MY_Input extends CI_Input {
    function My_Input()
    {
        parent::CI_Input();
    }
}

सुझाव: आपकी क्लास का कोई फ़ंग्शन जिसका नाम अपनी मूलजनक क्लास के किसी फ़ंग्शन के समान है तो वह अपने मूल फ़ंग्शन की जगह पर उपयोग किया जायेगा (इसे "Method Overriding" या रीति उल्लंघन भी कहा जाता है.)

यदि आप कंट्रोलर की क्रोड़ क्लासों को विस्तारित कर रहे हैं, तो आप अपनी नई क्लास को अपने कंस्ट्रक्टर में extend या विस्तारित करना ना भूलें.

class Welcome extends MY_Controller {
    function Welcome()
    {
        parent::MY_Controller();
    }
    function index()
    {
        $this->load->view('welcome_message');
    }
}

अपना स्वयं का उपसर्ग लगाना.

अपने उप-क्लास(sub-class) उपसर्ग को निश्चित करने के लिए अपनी application/config/config.php फ़ाइल को खोलिये फ़िर इस लाइन को खोजिये:

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

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

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

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

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

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

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

ARCHIVES

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

समर्थक