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 से संबंधित हों।