परिचय
PHP में, नेमस्पेस के उपयोग से समान नाम वाली क्लासेज/फंक्शन्स/कॉन्स्टेंट्स को विभिन्न संदर्भों में बिना किसी संघर्ष के उपयोग किया जा सकता है, जिससे इन आइटम्स को एनकैप्सुलेट किया जाता है। एक नेमस्पेस क्लासेज/फंक्शन्स आदि का तार्किक समूह है जो उनकी प्रासंगिकता पर निर्भर करता है। जैसे एक ही नाम की फाइल दो अलग-अलग फोल्डर्स में मौजूद हो सकती है, वैसे ही एक निश्चित नाम की क्लास को दो नेमस्पेस में परिभाषित किया जा सकता है। इसके अलावा, जैसे हम किसी फाइल का पूरा पथ निर्दिष्ट करके एक्सेस प्राप्त करते हैं, हमें क्लास का पूरा नाम नेमस्पेस के साथ निर्दिष्ट करना होता है।
एप्लिकेशन कोड बढ़ने पर नेमस्पेस का उपयोग महत्वपूर्ण हो जाता है। प्रत्येक क्लास/फंक्शन को एक यूनिक नाम देना मुश्किल और सुंदर नहीं होता, नेमस्पेस काम आता है। उदाहरण के लिए, यदि हमें area और tax की गणना के लिए calculate() फंक्शन घोषित करने की आवश्यकता है, तो उन्हें calculate_area() और calculate_tax() के रूप में परिभाषित करने के बजाय, हम area और tax नाम के दो नेमस्पेस बना सकते हैं और उनके अंदर calculate() उपयोग कर सकते हैं।
नेमस्पेस दो समस्याओं का समाधान करते हैं:
किसी तीसरे पक्ष की क्लासेज/फंक्शन्स/कॉन्स्टेंट्स के साथ नाम टकराव से बचाव।
अतिरिक्त लंबे नामों को एलियास (या छोटा) करने की क्षमता प्रदान करना, जिससे सोर्स कोड की पठनीयता में सुधार होता है।
PHP नेमस्पेस संबंधित क्लासेज, इंटरफेस, फंक्शन्स और कॉन्स्टेंट्स को समूहित करने का एक तरीका प्रदान करते हैं। नेमस्पेस नाम केस-इनसेंसिटिव हैं।
उदाहरण: नेमस्पेस परिभाषित करना और उपयोग करना
<?php
namespace myspace;
function hello() {
echo "Hello World\n";
}
?>
नेमस्पेस के अंदर परिभाषित फंक्शन को कॉल करने के लिए, use कीवर्ड के साथ शामिल करें। फंक्शन का नाम नेमस्पेस के साथ क्वालिफाइड होता है।
<?php
namespace myspace;
function hello() {
echo "Hello World\n";
}
use myspace;
myspace\hello();
?>
आउटपुट
Hello World
नेमस्पेस के लाभ
- संगठन: संबंधित कोड को तार्किक रूप से समूहित करता है।
- नाम संघर्ष रोकथाम: समान नाम वाली क्लासेज अलग-अलग नेमस्पेस में सह-अस्तित्व में रह सकती हैं।
- एलियासिंग: लंबे नेमस्पेस नामों को छोटा करने के लिए
useकीवर्ड। - ऑटोलोडिंग: PSR-4 मानक नेमस्पेस को डायरेक्टरी संरचना में मैप करता है।
नेमस्पेस घोषणा नियम
- नेमस्पेस घोषणा फाइल में
- एक फाइल में एकाधिक नेमस्पेस हो सकते हैं (ब्रैकेटेड सिंटैक्स के साथ)।
- नेमस्पेस नाम:
Vendor\Package\SubPackage(PSR-4 कन्वेंशन)।