প্রদত্ত ফাইল 1-এর নামস্থান ns_1 এবং ফাইল 2-এর নেইমস্পেস ns_2 রয়েছে, যদি ফাইল 1 এবং ফাইল 2 ফাইল 3-তে অন্তর্ভুক্ত করা হয়, তাহলে নামস্থান ns_1 এবং ns_2 লোড করা হয়েছে তা জানার কোনো উপায় নেই৷
একমাত্র উপায় হল 'class_exists' ফাংশন ব্যবহার করা এবং নির্দিষ্ট নামস্থান সহ ক্লাসের তালিকা 'get_declared_classes' ব্যবহার করে পাওয়া যেতে পারে। সহজভাবে বলতে গেলে, প্রাপ্ত এই তথ্যটি সমস্ত ঘোষিত শ্রেণীর নাম দেওয়া একটি মিলে যাওয়া নামস্থান খুঁজে পেতে ব্যবহার করা যেতে পারে −
function namespaceExists($namespace) {
$namespace .= "\\";
foreach(get_declared_classes() as $name)
if(strpos($name, $namespace) === 0) return true;
return false;
} ----বা---
উদাহরণ
<?php
namespace FirstNamespace;
class new_class {}
namespace SecondNamespace;
class new_class {}
namespace ThirdNamespace\FirstSubNamespace;
class new_class {}
namespace ThirdNamespace\SecondSubNamespace;
class new_class {}
namespace SecondNamespace\FirstSubNamespace;
class new_class {}
$namespaces=array();
foreach(get_declared_classes() as $name) {
if(preg_match_all("@[^\\\]+(?=\\\)@iU", $name, $matches)) {
$matches = $matches[0];
$parent =&$namespaces;
while(count($matches)) {
$match = array_shift($matches);
if(!isset($parent[$match]) && count($matches))
$parent[$match] = array();
$parent =&$parent[$match];
}
}
}
print_r($namespaces); আউটপুট
এটি নিম্নলিখিত আউটপুট −
তৈরি করবেArray ( [FirstNamespace] => [SecondNamespace] => Array ( [FirstSubNamespace] => ) [ThirdNamespace] => Array ( [FirstSubNamespace] => [SecondSubNamespace] => ) )
বিভিন্ন নামস্থান তৈরি করা হয় (প্রথম নামস্থান, দ্বিতীয় নামস্থান..) এবং খালি শ্রেণি ঘোষণা করা হয় (নতুন_শ্রেণী)। নামস্থানের একটি অ্যারে তৈরি করা হয় এবং ঘোষিত ক্লাসগুলির মধ্য দিয়ে একটি foreach লুপ চলে। একটি রেগুলার এক্সপ্রেশন ম্যাচ করা হয় এবং সেই নির্দিষ্ট পরিবেশে সংজ্ঞায়িত নামস্থানগুলি প্রদর্শিত হবে৷