Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

Global Space ใน PHP Namespaces

บทนำ

หากไม่มี 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