PHP-তে OOP-এ নেমস্পেস সাবস্পেস
এখন ধরা যাক আমাদের কাছে আরও জটিল একটি পরিস্থিতি রয়েছে:
অ্যাডমিনের জন্য দুটি ক্লাস Page তৈরি করা প্রয়োজন
- একটি পৃষ্ঠার ডেটা নিয়ে, এবং দ্বিতীয়টি - এই ডেটার উপস্থাপনা
নিয়ে। ধরা যাক প্রথম ক্লাসটি রয়েছে
ফাইল /admin/data/page.php-এ, এবং দ্বিতীয়টি
- ফাইল /admin/view/page.php-এ।
পূর্ববর্তী পাঠগুলোতে আমরা ইতিমধ্যেই সিদ্ধান্ত নিয়েছি যে ফোল্ডার
admin-এর সমস্ত ক্লাস নেমস্পেস
Admin-এর অন্তর্ভুক্ত হবে। তবে, এখন এই
একই নেমস্পেসে আমাদের দুটি ক্লাসের মধ্যে দ্বন্দ্ব রয়েছে।
সমস্যার সমাধানের জন্য অতিরিক্ত
নেমস্পেস সাবস্পেস তৈরি করা যেতে পারে। উদাহরণস্বরূপ,
Admin নেমস্পেস তৈরি করা যেতে পারে, এবং এর মধ্যে সাবস্পেস
Data এবং View তৈরি করা যেতে পারে। এই ক্ষেত্রে
এই সাবস্পেসগুলোর নাম সহজভাবে
ব্যাকস্ল্যাশ দিয়ে লেখা হয় - নেমস্পেস নির্ধারণ করার সময়ও
আর ক্লাসের অবজেক্ট তৈরি করার সময়ও।
এখানে এটি স্পষ্ট করা উচিত যে সাবস্পেসের নেস্টিং লেভেল সীমিত নয় (সাবস্পেসের মধ্যে সাব সাবস্পেস তৈরি করা যেতে পারে এবং এভাবে আরও করা যেতে পারে)।
সুতরাং, আসুন আমরা উপরে বর্ণিত আমাদের
উদাহরণটি শেষ করি। /admin/data/page.php ফাইলের Page
ক্লাসের জন্য আমরা Admin\Data নেমস্পেস নির্দেশ করব:
<?php
namespace Admin\Data;
class Page
{
}
?>
/admin/view/page.php ফাইলের Page
ক্লাসের জন্য আমরা Admin\View নেমস্পেস নির্দেশ করব:
<?php
namespace Admin\View;
class Page
{
}
?>
আসুন আমাদের ক্লাসগুলোর অবজেক্ট তৈরি করি:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
ধরা যাক আপনার কাছে modules/cart ফোল্ডার রয়েছে।
এটি এমনভাবে সেটআপ করুন যেন এই ফোল্ডারের
সমস্ত ক্লাস Modules\Cart নেমস্পেসের
অন্তর্ভুক্ত হয়।
ধরা যাক আপনার কাছে modules/shop/cart/ ফোল্ডার রয়েছে।
এটি এমনভাবে সেটআপ করুন যেন এই ফোল্ডারের
সমস্ত ক্লাস Modules\Shop\Cart নেমস্পেসের
অন্তর্ভুক্ত হয়।