ถ้าไฟล์ 1 มี namespace ns_1 และไฟล์ 2 มี namespace ns_2 หากไฟล์ 1 และ 2 ถูก include ในไฟล์ 3 ไม่มีทางรู้ว่า namespace ns_1 และ ns_2 ถูกโหลดแล้ว
วิธีเดียวคือใช้ฟังก์ชัน 'class_exists' และรายการคลาสที่มี namespace เฉพาะสามารถได้รับได้โดยใช้ 'get_declared_classes' อย่างง่ายคือข้อมูลที่ได้สามารถใช้หา namespace ที่ตรงกันได้จากชื่อคลาสที่ประกาศทั้งหมด:
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] => ) )
สร้าง namespace ต่างๆ (FirstNamespace, SecondNamespace..) และประกาศคลาสว่าง (new_class) สร้างอาร์เรย์ของ namespace และลูป foreach วนผ่านคลาสที่ประกาศ ทำการจับคู่ regex และ namespace ที่กำหนดในสภาพแวดล้อมนั้นจะแสดงออกมา