เส้นทางสัมพัทธ์ในเนมสเปซใน OOP ใน PHP

สมมติว่าในไฟล์ index.php กำลังเกิด การเรียกใช้ต่อไปนี้:

index.php<?php
  namespace Admin\Data;
  
  new \Core\Controller;
?>

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

index.php<?php
  namespace Admin\Data;
  
  new Core\Controller; // เทียบเท่ากับ \Admin\Data\Core\Controller
?>
Задание 1

กำหนดคลาสสองคลาส:

php<?php
  namespace Modules\Shop\Core;
  
  class Cart
  {
    
  }
?>
php<?php
  namespace Modules\Shop;
  
  class UserCart extends \Modules\Shop\Core\Cart
  {
    
  }
?>

ลดความซับซ้อนของโค้ดสำหรับการสืบทอดคลาส โดยคำนึงถึง ข้อที่ว่าเนมสเปซของคลาสของเรามี ส่วนที่ตรงกัน

Задание 2

กำหนดคลาสสองคลาส:

php<?php
  namespace Core\Data;
  
  class Controller
  {
    
  }
?>
php<?php
  namespace Core\Data;
  
  class Model
  {
    
  }
?>

นี่คือการสร้างออบเจ็กต์ของคลาสเหล่านี้ใน ไฟล์ index.php:

index.php<?php
  namespace Core\Data;
  
  $controller = new \Core\Data\Controller;
  $model      = new \Core\Data\Model;
?>

ลดความซับซ้อนของโค้ดสำหรับการสร้างออบเจ็กต์ โดยคำนึงถึง เนมสเปซที่ซึ่งออบเจ็กต์ของคลาสของเราถูกสร้างขึ้น