ভূমিকা
নেমস্পেসের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হলো এক্সটার্নাল ফুলি কোয়ালিফাইড নামকে একটি এলিয়াস দিয়ে রেফার করা বা ইম্পোর্ট করা। 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;
//
//
}
?>
ইনক্লুডেড ফাইলগুলো প্যারেন্ট ফাইলের ইম্পোর্টিং রুল ইনহেরিট করবে না কারণ সেগুলো পার-ফাইল বেসিসে থাকে।