2012-11-25 12 views
11

मैं कोडनिर्देशक के लिए बहुत नया हूं, मैं जानना चाहता था कि नियंत्रक में एक कन्स्ट्रक्टर का अर्थ क्या है।कोडइग्निटर कंट्रोलर कन्स्ट्रक्टर

class upload extends CI_Controller { 

    function __construct() { 
     parent::__construct(); 
     $this->load->helper(form); 
    } 

    // rest of the class... 

मेरा प्रश्न जब निर्माता शुरू हो जाती है है - - मैं एक CodeIgniter ट्यूटोरियल में निम्न कोड को देखा (? जैसे नियंत्रक वर्ग प्रत्येक अनुरोध के लिए उसे प्राप्त instantiated है) यह हर बार नियंत्रक एक अनुरोध में कार्य करता है कहा जाता है

+1

तुम खुद परीक्षण कर सकते हैं देखें कि क्या होगा। टाइम स्ट्रिंग को बाहर निकाला गया पृष्ठ पेज रीफ्रेश पर बदल जाएगा, इसलिए इसका मतलब है कि कक्षा प्रत्येक अनुरोध के लिए तत्काल है। – Melkor

उत्तर

13

अच्छा, यह एक सामान्य सामान्य प्रश्न है। वैसे भी, हाँ, जादू विधि __construct() को कक्षा के प्रत्येक तत्कालता पर स्वचालित रूप से कहा जाता है, जैसा कि आप मैन्युअल में देख सकते हैं: http://www.php.net/manual/en/language.oop5.decon.php

आमतौर पर, सीआई में एक कन्स्ट्रक्टर को कॉल करने के लिए आवश्यक नहीं है, जब तक आप वास्तव में नहीं एक चाहता हूँ। आपके द्वारा पोस्ट किए गए उदाहरण में, कोड वर्ग के प्रत्येक तत्कालता पर सहायक को लोड करता है - जो कि प्रत्येक विधि में सहायक लोड करने जैसा ही है, बस बहुत सारे टाइपिंग को बचाता है और यह सुनिश्चित करता है कि यह भुला नहीं गया है। आप वैकल्पिक रूप से पुस्तकालय/सहायक/मॉडल आप config/autoload.php में संबंधित autoload सरणी में लोड alywas करना चाहते डाल (जाँच "autoloading" सीआई के मैनुअल में)

कर सकते हैं एक बार जब आप अपने बच्चे को नियंत्रक आप में एक निर्माता को परिभाषित 'माता-पिता कन्स्ट्रक्टर (मेल CI_Controller क्लास के) को कॉल करने के लिए मजबूर किया गया है, क्योंकि वहां मुख्य सीआई ऑब्जेक्ट बनाया गया है और सभी कक्षाएं लोड की गई हैं, और आपको अपने बच्चे नियंत्रक में भी उन लोगों की आवश्यकता है; यदि ऐसा करने में विफल रहता है तो आपका बच्चा वर्ग अलग-अलग निर्माण करेगा और वारिस नहीं करेगा।

मुझे आशा है कि मैं अपने आप को स्पष्ट कर दिया, अंग्रेजी मेरी मातृभाषा नहीं है :)

3

निर्माता जादू सचमुच अपने एक जादू विधि कहा जाता है। कन्स्ट्रक्टर कूल बनाता है कि यह किसी भी तरीके से पहले आपके लिए चीजें करेगा। तो यदि आपके पास कोई व्यवस्थापक वर्ग है, और किसी को इसे एक्सेस करने के लिए लॉग इन होना चाहिए - तो आप कन्स्ट्रक्टर में लॉगिन की जांच कर सकते हैं और अगर वे अधिकृत नहीं हैं तो उन्हें उछाल दें।

कन्स्ट्रक्टर में आप अपनी कक्षा की जरूरतों के मॉडल, पुस्तकालय, सहायक, आदि लोड कर सकते हैं, और वे कक्षा में किसी भी विधि के लिए उपलब्ध होंगे।

आप विधियों द्वारा उपयोग किए जाने वाले चर में लोड कर सकते हैं। यह मॉडल के लिए वास्तव में उपयोगी है। अपने निर्माता में सिर्फ `var_dump (समय())` और के लिए पृष्ठ ताज़ा:

+2

क्या रचनाकार को केवल एक बार बुलाया जाता है जब कक्षा शुरू होती है या क्या हर बार नियंत्रक के अंदर विधियों को बुलाया जाता है? – Prabhu

+0

@ प्रभु केवल एक बार, जब तक कोई नया अनुरोध नहीं आता –

0

नवीनतम अपाचे & CodeIgniter में _construct() समारोह का उपयोग न करें

उपयोग helperlin in index() समारोह