दिए गए फ़ाइल 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] => )
)
विभिन्न नेमस्पेस बनाए गए हैं (FirstNamespace, SecondNamespace..) और खाली वर्ग घोषित किया गया है (new_class)। नेमस्पेस की एक सरणी बनाई गई है और एक foreach लूप घोषित वर्गों के माध्यम से चलता है। एक नियमित अभिव्यक्ति मिलान किया जाता है और उस विशिष्ट वातावरण में परिभाषित नेमस्पेस प्रदर्शित किए जाएंगे।