ফাইল ১-এ ns_1 নেমস্পেস এবং ফাইল ২-এ ns_2 নেমস্পেস থাকলে, যদি ফাইল ১ এবং ফাইল ২ ফাইল ৩-এ ইনক্লুড করা হয়, তবে 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] => ) )
বিভিন্ন নেমস্পেস তৈরি করা হয়েছে (FirstNamespace, SecondNamespace..) এবং খালি ক্লাস ডিক্লেয়ার করা হয়েছে (new_class)। একটি নেমস্পেস অ্যারে তৈরি করা হয়েছে এবং ফরইচ লুপ ডিক্লেয়ার্ড ক্লাসগুলোতে চলে। একটি রেগুলার এক্সপ্রেশন ম্যাচ করা হয় এবং সেই এনভায়রনমেন্টে ডিফাইন করা নেমস্পেসগুলো প্রদর্শিত হবে।