परिचय
नेमस्पेस की एक महत्वपूर्ण विशेषता पूरी तरह से क्वालिफाइड बाहरी नाम को एलियास या इम्पोर्ट करके संदर्भित करने की क्षमता है। PHP नेमस्पेस निम्न प्रकार के एलियासिंग या इम्पोर्टिंग का समर्थन करते हैं:
- क्लास नाम का एलियासिंग
- इंटरफेस नाम का एलियासिंग
- नेमस्पेस नाम का एलियासिंग
- फंक्शन और कॉन्स्टेंट नामों का एलियासिंग या इम्पोर्टिंग
PHP में, एलियासिंग use ऑपरेटर के साथ पूरी की जाती है।
use ऑपरेटर
उदाहरण: फंक्शन एलियासिंग
# test1.php
<?php
namespace mynamespace;
function sayhello() {
echo "Hello from mynamespace\n";
}
sayhello();
namespace mynewspace;
function sayhello() {
echo "Hello from my new space\n";
}
sayhello();
use \mynewspace\sayhello as hello;
?>
आउटपुट
Hello from mynamespace Hello from my new space
मल्टीपल use स्टेटमेंट्स संयुक्त
उदाहरण
<?php
namespace mynamespace;
class myclass {
function test() { echo "myclass in mynamespace\n"; }
}
class testclass {
static function test() { echo "testclass in mynamespace\n"; }
}
use \mynamespace\myclass as myclass, \mynamespace\testclass;
$a = new myclass();
$a->test();
$b = new \mynamespace\testclass();
$b->test();
?>
आउटपुट
myclass in mynamespace testclass in mynamespace
इम्पोर्टिंग और डायनामिक नाम
इम्पोर्टेड क्लास के नाम को डायनामिक रूप से प्रतिस्थापित करना:
<?php
namespace mynamespace;
class myclass {
function test() { echo "myclass in mynamespace\n"; }
}
class testclass {
static function test() { echo "testclass in mynamespace\n"; }
}
use \mynamespace\myclass as myclass;
$a = new myclass;
$b = 'myclass';
$c = new $b;
?>
महत्वपूर्ण प्रतिबंध
use कीवर्ड को आउटमोस्ट या ग्लोबल स्कोप में, या नेमस्पेस घोषणाओं के अंदर घोषित किया जाना चाहिए। इम्पोर्टिंग की प्रक्रिया कंपाइल टाइम पर होती है रनटाइम पर नहीं। इसलिए यह ब्लॉक-स्कोप्ड नहीं हो सकती। निम्न उपयोग अवैध होगा:
<?php
function myfunction() {
use myspace\myclass; // अवैध: फंक्शन के अंदर use नहीं कर सकते
}
?>
इंक्लूडेड फाइलें पैरेंट फाइल के इम्पोर्टिंग नियमों को इनहेरिट नहीं करतीं क्योंकि वे प्रति-फाइल आधार पर होती हैं।
उपयोग के प्रकार
| प्रकार | उदाहरण | विवरण |
|---|---|---|
| क्लास एलियास | use Vendor\Package\ClassName as ShortName | क्लास के लिए छोटा नाम |
| इंटरफेस एलियास | use Vendor\Package\InterfaceName | इंटरफेस के लिए छोटा नाम |
| नेमस्पेस एलियास | use Vendor\Package\SubNamespace as NS | नेमस्पेस के लिए छोटा नाम |
| फंक्शन इम्पोर्ट | use function Vendor\Package\funcName | PHP 5.6+ में समर्थित |
| कॉन्स्टेंट इम्पोर्ट | use const Vendor\Package\CONST_NAME | PHP 5.6+ में समर्थित |