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

การประกาศ Sub-namespaces ใน PHP

บทนำ

สามารถสร้าง Namespace ภายใน Namespace ได้ (Sub-namespaces) เหมือน Directory ใน File System มีโครงสร้างแบบลำดับชั้น (Hierarchical) ใช้ Backslash \ คั่นระหว่างระดับ

ตัวอย่าง Sub-namespaces

Top-level namespace myspace มี Sub-namespaces space1 และ space2 เข้าถึงฟังก์ชัน/คลาสใน Sub-namespace ด้วยคีย์เวิร์ด use:

<?php
namespace myspace\space1;
function hello() {
    echo "Hello World from space1\n";
}

namespace myspace\space2;
function hello() {
    echo "Hello World from space2\n";
}

use myspace\space1;
hello();  // เรียก space1\hello()

use myspace\space2;
hello();  // เรียก space2\hello() - ทับซ้อน space1
?>

ผลลัพธ์

Hello World from space2
Hello World from space2

หมายเหตุ: คำสั่ง use ตัวหลังจะ Override ตัวก่อน หากชื่อ Function/Class ชื่อเดียวกัน

การเข้าถึงแบบ Explicit

เพื่อความชัดเจน ควรใช้ Fully Qualified Name หรือ Alias:

<?php
namespace myspace\space1;
function hello() { echo "space1\n"; }

namespace myspace\space2;
function hello() { echo "space2\n"; }

namespace myspace\space3;
use myspace\space1;
use myspace\space2 as space2;

space1\hello();   // space1
space2\hello();   // space2 (ใช้ alias)
?>

Best Practices

  • ใช้ PSR-4: Namespace ตรงกับ Directory Structure
  • Top-level Namespace = Vendor Name (เช่น App, Vendor\Package)
  • Sub-namespaces = Feature/Module (เช่น App\Controller, App\Model\User)
  • หลีกเลี่ยงชื่อ Sub-namespace ซ้ำกันในระดับต่างๆ
  • ใช้ use ... as Alias เมื่อมีชื่อชนกัน