ไวยากรณ์เนมสเปซใน OOP ใน PHP
เพื่อกำหนดเนมสเปซให้กับคลาส จำเป็นต้อง
เขียนคำสั่ง namespace ในบรรทัดแรกของไฟล์
ที่เก็บคลาสนี้
และหลังจากนั้น ตามด้วยช่องว่าง - ชื่อของ
เนมสเปซนี้
หากคลาสอยู่ในเนมสเปซใดๆ สำหรับการสร้างออบเจ็กต์ของคลาสจะ ต้องระบุไม่เพียงแต่ชื่อคลาสเท่านั้น แต่ยังรวมถึง เนมสเปซของคลาสด้วย โดยคั่นด้วยแบ็กสแลช ลองดูตัวอย่าง
สมมติว่าเรามีคลาส Page ที่ไม่ได้อยู่ใน
เนมสเปซใดๆ ดังนั้นออบเจ็กต์
ของคลาสนี้เราจะสร้างดังนี้:
<?php
$page = new Page;
?>
ตอนนี้ให้คลาสนี้อยู่ในเนมสเปซ
Admin ในกรณีนี้ ออบเจ็กต์ของคลาสนี้
เราจะสร้างดังนี้:
<?php
$page = new \Admin\Page;
?>
มาแยกคลาสสำหรับผู้ใช้และคลาส สำหรับผู้ดูแลระบบออกเป็นเนมสเปซที่ต่างกัน เพื่อหลีกเลี่ยงข้อขัดแย้งของคลาสที่ อธิบายไว้ข้างต้น
สำหรับคลาส Page จากไฟล์ /admin/page.php
ให้ระบุเนมสเปซ Admin:
<?php
namespace Admin;
class Page
{
}
?>
และสำหรับคลาส Page จากไฟล์ /users/page.php
ให้ระบุเนมสเปซ Users:
<?php
namespace Users;
class Page
{
}
?>
ทีนี้มาในไฟล์ /index.php
สร้างออบเจ็กต์ของคลาส Page ทั้งสองคลาส
:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
สมมติว่าคุณมีโฟลเดอร์ core และโฟลเดอร์
project ในแต่ละโฟลเดอร์มี
คลาส Controller ของตัวเอง ทำเพื่อให้
คลาสเหล่านี้อยู่ในเนมสเปซที่ต่างกัน
ในไฟล์ index.php สร้างออบเจ็กต์
ของคลาสทั้งสอง