ไวยากรณ์เนมสเปซใน OOP ใน PHP

เพื่อกำหนดเนมสเปซให้กับคลาส จำเป็นต้อง เขียนคำสั่ง namespace ในบรรทัดแรกของไฟล์ ที่เก็บคลาสนี้ และหลังจากนั้น ตามด้วยช่องว่าง - ชื่อของ เนมสเปซนี้

หากคลาสอยู่ในเนมสเปซใดๆ สำหรับการสร้างออบเจ็กต์ของคลาสจะ ต้องระบุไม่เพียงแต่ชื่อคลาสเท่านั้น แต่ยังรวมถึง เนมสเปซของคลาสด้วย โดยคั่นด้วยแบ็กสแลช ลองดูตัวอย่าง

สมมติว่าเรามีคลาส Page ที่ไม่ได้อยู่ใน เนมสเปซใดๆ ดังนั้นออบเจ็กต์ ของคลาสนี้เราจะสร้างดังนี้:

index.php<?php
  $page = new Page;
?>

ตอนนี้ให้คลาสนี้อยู่ในเนมสเปซ Admin ในกรณีนี้ ออบเจ็กต์ของคลาสนี้ เราจะสร้างดังนี้:

index.php<?php
  $page = new \Admin\Page;
?>

มาแยกคลาสสำหรับผู้ใช้และคลาส สำหรับผู้ดูแลระบบออกเป็นเนมสเปซที่ต่างกัน เพื่อหลีกเลี่ยงข้อขัดแย้งของคลาสที่ อธิบายไว้ข้างต้น

สำหรับคลาส Page จากไฟล์ /admin/page.php ให้ระบุเนมสเปซ Admin:

/admin/page.php<?php
  namespace Admin;
  
  class Page
  {
    
  }
?>

และสำหรับคลาส Page จากไฟล์ /users/page.php ให้ระบุเนมสเปซ Users:

/users/page.php<?php
  namespace Users;
  
  class Page
  {
    
  }
?>

ทีนี้มาในไฟล์ /index.php สร้างออบเจ็กต์ของคลาส Page ทั้งสองคลาส :

index.php<?php
  require_once '/admin/page.php';
  require_once '/users/page.php';
  
  $adminPage = new \Admin\Page;
  $usersPage = new \Users\Page;
?>
Задание 1

สมมติว่าคุณมีโฟลเดอร์ core และโฟลเดอร์ project ในแต่ละโฟลเดอร์มี คลาส Controller ของตัวเอง ทำเพื่อให้ คลาสเหล่านี้อยู่ในเนมสเปซที่ต่างกัน ในไฟล์ index.php สร้างออบเจ็กต์ ของคลาสทั้งสอง