เส้นทางสัมพัทธ์ในเนมสเปซใน OOP ใน PHP
สมมติว่าในไฟล์ index.php กำลังเกิด
การเรียกใช้ต่อไปนี้:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
อย่างที่คุณทราบแล้ว เมื่ออ้างถึงคลาส ด้านหน้าชื่อเนมสเปซของมันควรเขียน เครื่องหมายแบ็กสแลช ที่จริงแล้วไม่จำเป็นต้องทำเช่นนั้นเสมอไป หากไม่เขียนเครื่องหมายสแลชนี้ ชื่อเนมสเปซที่ถูกเรียก จะถูกคำนวณโดยสัมพัทธ์กับ เนมสเปซปัจจุบัน ดูตัวอย่าง:
<?php
namespace Admin\Data;
new Core\Controller; // เทียบเท่ากับ \Admin\Data\Core\Controller
?>
กำหนดคลาสสองคลาส:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
ลดความซับซ้อนของโค้ดสำหรับการสืบทอดคลาส โดยคำนึงถึง ข้อที่ว่าเนมสเปซของคลาสของเรามี ส่วนที่ตรงกัน
กำหนดคลาสสองคลาส:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
นี่คือการสร้างออบเจ็กต์ของคลาสเหล่านี้ใน
ไฟล์ index.php:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
ลดความซับซ้อนของโค้ดสำหรับการสร้างออบเจ็กต์ โดยคำนึงถึง เนมสเปซที่ซึ่งออบเจ็กต์ของคลาสของเราถูกสร้างขึ้น