2012-08-01 18 views
6

मैं ऑनलाइन मॉड्यूल के बारे में सीख रहा हूं और ऐसा लगता है कि जेएस में मॉड्यूल और PHP में कक्षाएं बहुत समान हैं। कोडिंग को समझने के लिए दोनों समूह एक साथ काम करते हैं। कार्य दोनों में घोषित किया जा सकता है और सार्वजनिक या निजी बनाया जा सकता है। वे उपयोग में समान कैसे हैं और वे अलग कैसे हैं?PHP में जेएस और कक्षाओं में मॉड्यूल के बीच क्या अंतर है?

+1

कोई सीधा जवाब नहीं है, लेकिन कक्षाएं केवल समझने के लिए कार्यों को आसान बनाने के लिए नहीं हैं। उनका मुख्य उद्देश्य अबास्ट्रक्शन (कार्यान्वयन विवरण छुपाएं), encapsulation (केवल प्रत्येक ऑब्जेक्ट के लिए कुछ क्रियाओं को अनुमति देता है), और मॉड्यूलरिटी (प्रत्येक वर्ग को आसानी से पोर्टेबल बनाते हैं)। – Palladium

उत्तर

2

जावास्क्रिप्ट के मॉड्यूल कुछ अच्छी सुविधाएं प्रदान करते हैं जैसे encapsulation, निजी राज्य और यहां तक ​​कि अन्य मॉड्यूल से विरासत। जबकि वे कक्षाओं की कुछ विशेषताओं को प्रदान करते हैं, जैसे PHP में, वे नहीं हैं। वे कक्षाओं का अनुकरण करने के लिए मौजूदा जावास्क्रिप्ट कार्यक्षमता पर निर्माण करने की कोशिश करते हैं, इसलिए भ्रम क्यों। यानी वे कक्षा की तरह दिखने और महसूस करने के लिए बनाए गए हैं।

जावास्क्रिप्ट के मॉड्यूल एक चर के लिए असाइन किए गए अज्ञात फ़ंक्शन के उदाहरण हैं। इसलिए उनके पास एक फ़ंक्शन की सभी सुविधाएं हैं जहां उनका कोड शीर्ष से नीचे निष्पादित किया गया है, उनके पास और कभी-कभी रिटर्न स्टेटमेंट (PHP कक्षाओं में कोई विवरण सीधे फील्ड परिभाषा और असाइनमेंट से अलग नहीं किया जा सकता है) का उपयोग करता है और वे भी हैं वैश्विक चरों तक पहुंच। PHP में, दूसरी तरफ एक वर्ग, या इसके बजाय यह विधियां, एक चर का उपयोग नहीं कर सकती जो कक्षा में नहीं है। ग्लोबल वैरिएबल तक पहुंचने के लिए क्लास विधि या स्थैतिक फ़ंक्शन को आयात करने के लिए वेरिएबल i.e global $a इनॉर्डर को स्पष्ट रूप से कॉल करना होगा। जेएस मॉड्यूल में, सभी ग्लोबल वर्र्स सुलभ होते हैं लेकिन कभी-कभी कोई उन्हें नीदर कोड (function(a){})(imported);

एक और महत्वपूर्ण मुद्दा डेटा अबास्ट्रक्शन के लिए उन्हें आयात करने के लिए चुनता है। जबकि जेएस मॉड्यूल फ़ील्ड के लिए निजी राज्य प्रदान करते हैं, PHP की कक्षाएं, जैसे सी ++, जावा, पायथन इत्यादि, गुणों के लिए अधिक सुरक्षा प्रदान करती हैं। यह abstract class और interface कीवर्ड का उपयोग कर बेस क्लास के लिए अनुमति देता है जिससे कक्षा विधियों और विशेषताओं को केवल परिभाषित या संरचित किया जाता है लेकिन उपयोग नहीं किया जाता है।

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

कक्षाओं में स्थिर कार्य होते हैं, इन्हें कक्षा के ऑब्जेक्ट के बिना भी कहा जा सकता है और वस्तुओं से स्वतंत्र चलाया जा सकता है, दूसरी ओर जेएस में, सब कुछ एक वस्तु है; जो स्थैतिक कार्यों के बिंदु को हरा देता है।

वे इस तरह के समान हैं: दोनों में विरासत है, जहां आप एक मौजूदा मॉड्यूल को एक नए के साथ बढ़ा सकते हैं, और PHP में आप पेरेंट क्लास से प्राप्त करने के लिए extends का उपयोग कर सकते हैं। दोनों के पास बाहरी डेटा को बाहरी पहुंच को रोकने के लिए निजी डेटा राज्य हैं, वे समूह और पैकेज डेटा और विधियों दोनों, और दोनों ठीक से उपयोग किए जाने पर भयानक हैं।

संबंधित मुद्दे