এই আর্টিকেলে আমরা PHP-তে namespace শিখব। PHP-তে বড় অ্যাপ্লিকেশন তৈরি করার সময় বা থার্ড-পার্টি অ্যাপ্লিকেশন/লাইব্রেরি ইন্টিগ্রেট করার সময় ক্লাস নাম, ফাংশন নামের সংঘর্ষ (collision) হতে পারে। এই সমস্যা এড়াতে PHP "Namespaces" একটি পথ প্রদান করে যার মাধ্যমে সম্পর্কিত ক্লাস, ইন্টারফেস, ফাংশন এবং কনস্ট্যান্টগুলো গ্রুপ করা যায়।
নিচে namespace ডিক্লেয়ার করার সিনট্যাক্স দেওয়া হলো:
সিনট্যাক্স
<?php
namespace MyfirstNamespace {
function welcome() {
echo 'welcome To Namespace';
}
}
?>
PHP বিশ্বে, namespaces দুটি সমস্যা সমাধান করার জন্য তৈরি করা হয়েছে যা লাইব্রেরি ও অ্যাপ্লিকেশন ক্রিয়েটররা রি-ইউজেবল কোড কম্পোনেন্ট তৈরি করার সময় সম্মুখীন হন:
- ১. আপনার তৈরি কোড এবং ইন্টারন্যাল PHP ক্লাস/ফাংশন/কনস্ট্যান্ট বা থার্ড-পার্টি ক্লাস/ফাংশন/কনস্ট্যান্টের মধ্যে নাম সংঘর্ষ।
- ২. এক্সট্রা_লং_নেম সংক্ষিপ্ত করার ক্ষমতা সোর্স কোডের রিডেবিলিটি উন্নত করার জন্য।
নোট:
একটি namespace অ্যাপ্লিকেশনে ফাইলের অ্যাড্রেস রিপ্রেজেন্ট করার জন্য ডিজাইন করা হয়েছে। কখনো কখনো আমাদের অ্যাড্রেস সংক্ষিপ্ত করার প্রয়োজন হয়, সেক্ষেত্রে আমরা সেই অ্যাড্রেসের আলিয়াসের জন্য "USE" কিওয়ার্ড ব্যবহার করতে পারি। একটি উদাহরণ দিয়ে বুঝি।
<?php
namespace SMTP;
class Mail{}
namespace Mailgun;
class Mail{}
use SMTP\Mail as SMTPMail;
use Mailgun\Mail as MailgunMail;
$smtp_mailer = new SMTPMailer;
$mailgun_mailer = new MailgunMailer;
?>
ব্যাখ্যা:
এখানে একই নামে দুটি ক্লাস পাওয়া গেলো Mail, কিন্তু দুটি আলাদা namespace-এ। এবং যদি আমরা একই সময় দুটি Mail ক্লাস ব্যবহার করতে চাই তবে আমরা আলিয়াস ব্যবহার করতে পারি। পরে আপনার কোডে যদি সেই ক্লাস অবজেক্টগুলো অ্যাক্সেস করতে চান তবে সেগুলোও ইমপ্লিমেন্ট করতে পারবেন।