প্রদত্ত ফাইল 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 লুপ চলে। একটি রেগুলার এক্সপ্রেশন ম্যাচ করা হয় এবং সেই নির্দিষ্ট পরিবেশে সংজ্ঞায়িত নামস্থানগুলি প্রদর্শিত হবে৷