2010-03-02 16 views
44

में पुस्तकालय और सहायक बनाने के लिए निर्णय लेने के लिए कुछ समय के लिए कोडइग्निटर में विकसित होने के बाद, मुझे कस्टम लाइब्रेरी बनाने और कस्टम सहायक बनाने के लिए निर्णय लेने में मुश्किल होती है।कोडइग्निटर: कोडइग्निटर

मुझे समझ नहीं है कि दोनों उस में व्यापार तर्क होने की अनुमति है और (अलग नियंत्रक आदि से फोन कर)

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

वहां सीआई डेवलपर्स, कृपया सलाह दें।

मुझे लगता है कि एक उदाहरण शामिल करना बेहतर है।

मैं एक

class notification_lib { 
    function set_message() { /*...*/} 

    function get_message() {/*...*/} 

    function update_message() {/*...*/} 
} 

वैकल्पिक रूप से हो सकता है, मैं भी एक सहायक में सभी कार्यों शामिल हो सकते हैं।

एक notification_helper.php फ़ाइल में, मैं set_message(), get_message(), update_message() ..

कहाँ किसी भी तरह से, यह अभी भी पुन: उपयोग किया जा सकता है शामिल होंगे। तो इसने मुझे निर्णय लेने के बारे में सोचने के बारे में सोचा कि जब हम वास्तव में सीआई में पुस्तकालय और एक सहायक बनाते हैं।

एक सामान्य (ढांचे-कम) php ऐप में, विकल्प स्पष्ट है क्योंकि कोई सहायक नहीं है, आपको कोड का पुन: उपयोग करने के लिए केवल एक लाइब्रेरी बनाने की आवश्यकता होगी। लेकिन यहां, सीआई में, मैं पुस्तकालयों और सहायकों के कोर डेवलपर्स पृथक्करण को समझना चाहता हूं

+4

लाइब्रेरी एक वर्ग, सहायक = एक इसमें कुछ तरीकों के साथ फ़ाइल =। मैं इसे सही ढंग से याद कर सकते हैं ... – Natrium

उत्तर

25

एक सवाल मैं अपने आप को पूछना जब यह मैं आप के साथ-साथ में मदद मिलेगी लगता है कि निर्णय लेने से नहीं है। सवाल यह है: क्या मैं अपने ढांचे में एक सुविधा प्रदान कर रहा हूं या क्या मैं समेकित हूं?

यदि आपके पास एक ऐसा सुविधा है जिसे आप अपने ढांचे में जोड़ रहे हैं, तो आप इसके लिए एक लाइब्रेरी बनाना चाहेंगे। फॉर्म सत्यापन, उदाहरण के लिए, एक ऐसी सुविधा है जिसे आप ढांचे में जोड़ रहे हैं। भले ही आप इस पुस्तकालय के बिना फॉर्म सत्यापन कर सकते हैं, आप सत्यापन के लिए एक मानक प्रणाली बना रहे हैं जो एक सुविधा है।

हालांकि, एक फॉर्म हेल्पर भी है जो आपको फ़ॉर्म के HTML बनाने में मदद करता है। फॉर्म सत्यापन पुस्तकालय से बड़ा अंतर यह है कि फॉर्म हेल्पर एक नई सुविधा नहीं बना रहा है, यह केवल संबंधित कार्यों का एक सेट है जो आपको फ़ॉर्म के HTML को सही तरीके से लिखने में मदद करता है।

उम्मीद है कि यह भिन्नता आपकी मदद करेगी क्योंकि यह मेरे पास है।

+1

फिल, जब यह करने के लिए नीचे आता है दो मानसिकता है कि अलग नहीं हैं होना चाहिए यह आम तौर पर ऐसा होता है।। जब आप कार्यों को मजबूत, आप इसके लिए एक पुस्तकालय बनाने के कार्यों के बीच जानकारी पारित करने के लिए की आवश्यकता नहीं है। लेकिन कई बार जब आप कार्यों के बीच जानकारी पहुंचाना चाहते हैं कर रहे हैं, लेकिन नहीं। और मेरे प्रस्तावित मानसिकता उस मामले को संभालती है। सहायकों स्वतंत्रता पुस्तकालयों कि आम तौर पर के खिलाफ की रक्षा। पुस्तकालयों में निर्माण कर रहे हैं एक तरह से देते हैं, आप सिफारिश कर रहे हैं (/) की आवश्यकता अपने कार्यों का उपयोग करने, सहायकों बस देखते हैं और कहा जा सकता है जब भी। यही कुछ मैं जब डिजाइनिंग ध्यान में रखना। – Seaux

0

व्यक्तिगत रूप से मैं बड़ी चीजों के लिए पुस्तकालयों का उपयोग करता हूं, एक एफ़टीपी-पुस्तकालय मैंने कहा है कि कोडइग्निटर से लाइब्रेरी भेज दिया गया है। यह एक वर्ग है जिसमें कई विधियां हैं जो एक-दूसरे के साथ डेटा साझा करती हैं।

मैं छोटे कार्यों के लिए हेल्पर्स का उपयोग करता हूं जो कई अन्य कार्यक्षमताओं से संबंधित नहीं हैं। सजाने वाले तारों जैसे छोटे कार्य एक उदाहरण हो सकते हैं। या किसी अन्य स्थान पर एक निर्देशिका को दोबारा कॉपी करना।

+3

मुझे लगता है कि यहां मुख्य अवधारणा – user179432

+1

मुझे लगता है कि "डेकोरेटर" एक महत्वपूर्ण अवधारणा है 'तरीकों से एक दूसरे के साथ साझा है कि डेटा का एक बहुत कुछ के साथ एक वर्ग' है। उदाहरण के लिए यदि मैं एक स्ट्रिंग में एक div टैग को प्रीपेन्ड और जोड़ना चाहता हूं जो निश्चित रूप से एक सहायक कार्य है। फ़ंक्शन अन्य डेटा के बारे में परवाह नहीं करता है या नौकरी करने के लिए डेटा को सहेजता नहीं है। इसके अलावा इसे कहीं भी साझा और इस्तेमाल किया जा सकता है। – Clutch

57

अच्छी तरह से विकल्प कार्यों या वर्ग के सेट के लिए नीचे आता है। पसंद लगभग एक वर्ग वर्ग के रूप में एक स्थिर वर्ग के समान है।

यदि आपके पास केवल कार्यों का एक समूह है तो आपको केवल कार्यों का समूह बनाना होगा। यदि फ़ंक्शन के समूह बहुत सारे डेटा साझा करते हैं, तो आपको उस कक्षा को बनाने की आवश्यकता है जिसमें इस डेटा को विधि (कक्षा फ़ंक्शन) कॉल के बीच संग्रहीत करने का एक उदाहरण हो।

क्या आपके पास अपने अधिसूचना संदेशों से संबंधित स्टोर करने के लिए कई सार्वजनिक या निजी गुण हैं?

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

+0

हां, यह अधिक समझ में आता है ... – user179432

+1

आपको रिश्वत देने की आवश्यकता है। : पी +1 –

+3

मुझे धोखा दिया गया है! ओह सदमे, डरावनी, अत्याचार! नहीं किसी को बच्चों के बारे में सोच कर देंगे! :। '(अपनी टिप्पणी के लिए –

7

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

एक बार जब आप पूरी तरह से इस अंतर को समझ लेते हैं, निर्णय लेना मुश्किल नहीं होना चाहिए।

उम्मीद है कि मदद करता है।

धन्यवाद

3

हेल्पर में एक विशेष कार्य करने में आपकी सहायता के लिए कार्यों का एक समूह होता है।

Available helpers in CI

पुस्तकालय का इस्तेमाल गैर-सीआई विशिष्ट कार्यक्षमता होते हैं। एक छवि पुस्तकालय की तरह। कुछ जो अनुप्रयोगों के बीच पोर्टेबल है।

Available libraries in CI

स्रोत link

2

अगर किसी मुझसे पूछते हैं कि क्या जिस तरह से आप का पालन करें जब समय सहायकों या पुस्तकालय बनाने के लिए आता है।

मैं इन मतभेदों को लगता है:

  • कक्षा: संक्षेप में, एक कक्षा एक वस्तु के लिए एक खाका है। और एक वस्तु आपके आवेदन में कुछ की अवधारणा से संबंधित राज्य और उत्तरदायित्व को समाहित करती है और आमतौर पर एक प्रोग्रामिंग इंटरफ़ेस प्रदान करती है जिसके साथ इनसे बातचीत करने के लिए। यह कोड पुन: उपयोग को बढ़ावा देता है और रखरखाव में सुधार करता है।
  • कार्य: एक फ़ंक्शन कोड का एक टुकड़ा है जो पैरामीटर के रूप में एक और इनपुट लेता है और कुछ प्रोसेसिंग करता है और एक मान देता है। आपने पहले से ही फॉपेन() और फ़्रेड() इत्यादि जैसे कई फ़ंक्शन देखे हैं। वे अंतर्निहित फ़ंक्शंस हैं लेकिन PHP आपको अपने स्वयं के फ़ंक्शंस बनाने का विकल्प भी देता है।

तो अगर किसी भी एक बिंदु से मेल खाता है कक्षा के लिए यानी पुस्तकालयों जाना

  1. वैश्विक चर दो या अधिक कार्यों या यहां तक ​​कि एक में उपयोग करने की आवश्यकता है, मैं वैश्विक कीवर्ड के रूप में
  2. डिफ़ॉल्ट प्रारंभ का उपयोग कर से नफरत है प्रत्येक बार कॉल या लोड
  3. कुछ कार्य सार्वजनिक रूप से खुले नहीं होने वाले इकाई के लिए निजी हैं, कार्यों के बारे में सोचें कि सार्वजनिक संशोधक क्यों नहीं हैं?
  4. फ़ंक्शन निर्भरताओं के लिए फ़ंक्शन यानी कार्यों को अलग किया गया है लेकिन दो या दो से अधिक कार्यों को इसकी आवश्यकता है। वैध, ईमेल जांच के लिए केवल ईमेल भेजने वाली स्क्रिप्ट के लिए, सीसी, बीसीसी, आदि के बारे में सोचें। इन सभी की जरूरत validate_email है।
  5. और आखिरकार कम से कम सभी संबंधित कार्यों यानी कार्यों को एकल ऑब्जेक्ट या फ़ाइल में रखा जाना चाहिए, संदर्भ और याद के लिए यह आसान है।

सहायकों के लिए: किसी भी बिंदु जो पुस्तकालयों के साथ नहीं से मेल खाता है