บทนำ
หากไม่มี Namespace Definition ทุก Class/Function/Constant จะอยู่ใน Global Namespace หากชื่อขึ้นต้นด้วย \ จะหมายถึง Global Space แม้จะอยู่ใน Namespace Context ก็ตาม
การใช้ Global Space Specification
<?php
namespace test;
/* ฟังก์ชันนี้คือ test\fopen */
function fopen() {
/* ... */
$f = \fopen(...); // เรียก Global fopen
return $f;
}
?>
Included Files Default เป็น Global Namespace
test1.php
<?php echo __NAMESPACE__ . "\n"; ?>
จะพิมพ์ Empty String (Global Namespace)
test2.php (Include ใน Namespace)
<?php
namespace testspace {
include 'test1.php';
echo __NAMESPACE__ . "\n";
}
?>
ผลลัพธ์
testspace
ไฟล์ test1.php ไม่มี Namespace Declaration อยู่ใน Global Space แต่เมื่อ Include เข้าไปใน testspace นamespace จะยังคงเป็น Global (ไม่ได้กลายเป็น testspace)
สรุป
- No Namespace Declaration = Global Namespace
\Name= Global Space เสมอ- Included Files = Global Namespace (ไม่สืบทอด Namespace ของ Caller)
__NAMESPACE__ใน Global = Empty String