PHP Namespaces
Introduction to PHP Namespaces
Namespaces एक तरह के डेटा को एक साथ bind करने के लिए यूज़ किये जाते है। साथ ही ये same नाम की classes एक project में यूज़ करने के लिए भी उपयोगी है। जैसा की आपको पता है की आप एक ही नाम की classes अपने project में यूज़ नहीं कर सकते है। यदि आप ऐसा करेंगे तो errors शो होगी। लेकिन यदि आप इन same नाम की classes को अलग अलग namespaces में रख दे तो आप इस problem से बच सकते है।
एक namespace में आप classes, interfaces और functions store करवा सकते है। ये सभी classes, interfaces और functions के नाम वाली classes, interfaces और functions यदि किसी दूसरे namespace में भी है तो आपके project में कोई error नहीं आएगी। क्योंकि दोनों अलग अलग namespaces में है।
Defining Namespaces
Namespaces को declare करने के लिए namespace कीवर्ड यूज़ किया जाता है। जब भी आप किसी file में namespace declare करे तो आपको namespace declaration file में सबसे ऊपर करना चाहिए।
<?php
namespace myNamespace;
//Interfaces
//Classes
//Functions
?>
जिन classes को आप एक namespace में डालना चाहते है आपको उन सबको एक ही file में रखना जरुरी नहीं है। आप जिस भी file के content को उस namespace में डालना चाहते है उस file में टॉप पर आप वापस namespace को declare कर सकते है। ऐसा करने से उस file का content भी उसी namespace में आ जायेगा।
Sub Namespaces
किसी sub file directory की तरह ही आप sub namespaces भी क्रिएट कर सकते है।
<?php
namespace myNamespace/mySubNamespace;
//Interfaces
//Classes
//Functions
?>
Using Namespaces
किसी भी classes, interfaces और functions को namespace के नाम द्वारा access कर सकते है। इसके लिए आप पहले namespace का नाम लिखते है उसके बाद (/) लगा के जो class, interface या function आप यूज़ करना चाहते है उसका नाम लिखते है।
file1.php File:
<?php
namespace myNamespace;
class myClass
{
public function display()
{
echo "<h2>This is from another namespace</h2>";
}
}
?>
file2.php File:
<?php
namespace newNamespace;
require "file1.php";
$obj = new \myNamespace\myClass;
$obj->display();
?>
ऊपर दिए गए उदाहरण में file1.php file में create किये गए myNamespace namespace की myClass का object file2.php file में create किया गया है और उसके display function() को access किया गया है। इन दोनों namespaces को एक ही file में भी define किया जा सकता है। यह उदाहरण निचे दिया गया output generate करता है।