Đường dẫn tương đối trong không gian tên trong OOP PHP
Giả sử trong file index.php có
lời gọi sau:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
Như bạn đã biết, khi truy cập vào một class, trước không gian tên của nó cần viết dấu gạch chéo ngược. Trên thực tế điều này không bắt buộc. Nếu không viết dấu gạch chéo đó, thì không gian tên được gọi sẽ được tính toán tương đối so với không gian tên hiện tại. Xem ví dụ:
<?php
namespace Admin\Data;
new Core\Controller; // tương đương với \Admin\Data\Core\Controller
?>
Cho hai class:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Hãy đơn giản hóa mã kế thừa class, xem xét việc không gian tên của các class của chúng ta có phần trùng nhau.
Cho hai class:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
Đây là cách tạo đối tượng của các class này trong
file index.php:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Hãy đơn giản hóa mã để tạo đối tượng, xem xét không gian tên nơi tạo đối tượng của các class của chúng ta.