บทนำ
ใน PHP คีย์เวิร์ด namespace ใช้ Define Namespace และใช้เป็น Operator ขอเข้าถึง Element ใน Current Namespace ค่าคงที่ __NAMESPACE__ คืนชื่อ Current Namespace
__NAMESPACE__ Constant
- ใน Named Namespace: คืนชื่อ Namespace
- ใน Global/Unnamed Namespace: คืน Empty String
ตัวอย่าง Global Namespace
<?php echo "name of global namespace: " . __NAMESPACE__ . "\n"; ?>
ผลลัพธ์
name of global namespace:
ตัวอย่าง Named Namespace
<?php namespace myspace; echo "name of current namespace: " . __NAMESPACE__ . "\n"; ?>
ผลลัพธ์
name of current namespace: myspace
Dynamic Name Construction
__NAMESPACE__ ใช้สร้างชื่อแบบ Dynamic ได้:
<?php
namespace MyProject;
class myclass {
function hello() { echo "hello world"; }
}
$cls = "myclass";
function get($cls) {
$a = __NAMESPACE__ . '\\' . $cls;
return new $a;
}
get($cls)->hello();
?>
ผลลัพธ์
hello world
Namespace Operator
คีย์เวิร์ด namespace ใช้เป็น Operator เทียบเท่า self สำหรับ Class เพื่อขอ Element จาก Current/Sub-namespace อย่างชัดเจน:
<?php
namespace Myspace;
class myclass {
function hello() { echo "hello Myspace"; }
}
$a = new namespace\myclass();
$a->hello();
?>
ผลลัพธ์
hello Myspace
จาก Global Namespace
Namespace Operator ใน Global Space อ้างถึง Global Class:
<?php
class myclass {
function hello() { echo "hello global space"; }
}
$a = new namespace\myclass();
$a->hello();
?>
ผลลัพธ์
hello global space
สรุปการใช้งาน
| การใช้งาน | ตัวอย่าง | หมายเหตุ |
|---|---|---|
| Define Namespace | namespace MyApp; | Statement แรกในไฟล์ |
| __NAMESPACE__ | echo __NAMESPACE__; | Magic Constant |
| Namespace Operator | new namespace\MyClass() | เหมือน self สำหรับ namespace |
| Sub-namespace Access | namespace\Sub\Class | Relative to current |