PHP Namespaces (নেমস্পেস)
PHP Namespaces কী?
PHP-তে Namespaces হচ্ছে এমন একটি ফিচার, যা একই নামে একাধিক ক্লাস, ফাংশন বা কনস্ট্যান্ট তৈরি করতে সাহায্য করে এবং কোডকে সুন্দরভাবে সংগঠিত রাখে। ধরো, তুমি দুইটা আলাদা কাজের জন্য দুইটা Table নামের ক্লাস বানাতে চাও—একটা ওয়েবসাইটের টেবিলের জন্য, আরেকটা ফার্নিচারের টেবিলের জন্য। তখন নেমস্পেস তোমাকে এই দুইটা ক্লাস আলাদা রাখতে সাহায্য করবে।
কেন নেমস্পেস ব্যবহার করব?
১. কোডকে গ্রুপ করে সুন্দরভাবে সাজাতে পারো।
২. একই নামে একাধিক ক্লাস বা ফাংশন রাখতে পারো, কোনো কনফ্লিক্ট হবে না।
উদাহরণ:
একটা গ্রুপে থাকবে Html\Table, Html\Row, Html\Cell
আরেকটা গ্রুপে থাকবে Furniture\Table, Furniture\Chair, Furniture\Bed
কিভাবে Namespace ডিক্লেয়ার করব?
নেমস্পেস ডিক্লেয়ার করতে ফাইলের একদম শুরুতে namespace কীওয়ার্ড লিখতে হয়।
সিনট্যাক্স
<?php
namespace Html;
?>মনে রাখবে:
namespaceঅবশ্যই ফাইলের একদম শুরুতে থাকতে হবে। নিচের কোডটা ভুল:<?php echo "Hello World!"; namespace Html; // এটা ভুল ?>
এভাবে ডিক্লেয়ার করলে, ওই ফাইলে থাকা সব ক্লাস, ফাংশন, কনস্ট্যান্ট Html নেমস্পেসের মধ্যে থাকবে।
উদাহরণ
<?php
namespace Html;
class Table {
public $title = "";
public $numRows = 0;
public function message() {
echo "<p>Table '{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!-- HTML অংশ -->
<!DOCTYPE html>
<html>
<body>
<?php $table->message(); ?>
</body>
</html>Nested Namespace
আরও ভালোভাবে অর্গানাইজ করতে চাইলে, নেস্টেড নেমস্পেসও বানাতে পারো:
<?php
namespace Code\Html;
?>কিভাবে Namespace ব্যবহার করব?
নেমস্পেস ডিক্লেয়ার করার পর, ওই নেমস্পেসের ভেতরের ক্লাস বা ফাংশন সরাসরি ব্যবহার করা যায়।
কিন্তু বাইরে থেকে ব্যবহার করতে চাইলে, পুরো নেমস্পেসসহ ক্লাসের নাম লিখতে হবে।
উদাহরণ
<?php
$table = new Html\Table();
$row = new Html\Row();
?>অনেকগুলো ক্লাস একই নেমস্পেস থেকে ব্যবহার করলে, বারবার Html\ লিখতে বিরক্তিকর লাগতে পারে। তখন ফাইলের শুরুতেই নেমস্পেস ডিক্লেয়ার করে নিতে পারো:
<?php
namespace Html;
$table = new Table();
$row = new Row();
?>Namespace Alias (ছোট নাম)
নেমস্পেস বা ক্লাসের নাম ছোট করে লিখতে চাইলে use কীওয়ার্ড দিয়ে Alias ব্যবহার করা যায়।
নেমস্পেসের জন্য Alias
<?php
use Html as H;
$table = new H\Table();
?>ক্লাসের জন্য Alias
<?php
use Html\Table as T;
$table = new T();
?>এভাবেই PHP-তে নেমস্পেস ব্যবহার করে বড় প্রজেক্টের কোডকে সুন্দর ও কনফ্লিক্ট-ফ্রি রাখা যায়।
যদি কোনো অংশ বুঝতে সমস্যা হয়, পাশে বসা ভাইয়ের মতো বারবার পড়ে দেখো—নিশ্চিত সহজ লাগবে!