Không gian tên con trong OOP PHP
Bây giờ giả sử chúng ta có một tình huống phức tạp hơn:
cho quản trị viên cần tạo hai lớp Page
- một lớp chứa dữ liệu trang và lớp thứ hai - chứa phần trình bày
dữ liệu đó. Giả sử lớp đầu tiên nằm
trong tệp /admin/data/page.php, còn lớp thứ hai
- trong tệp /admin/view/page.php.
Trong các bài học trước, chúng ta đã quyết định rằng tất cả các lớp từ thư mục
admin sẽ thuộc về không gian
tên Admin. Tuy nhiên, bây giờ trong chính không gian đó, chúng ta có xung đột giữa hai lớp.
Để giải quyết vấn đề, có thể tạo thêm các
không gian tên con. Ví dụ, có thể tạo
không gian tên Admin, và trong đó có các không gian tên con
Data và View. Trong trường hợp này,
tên của các không gian tên con này đơn giản được viết
bằng dấu gạch chéo ngược - cả khi xác định không gian tên
và khi tạo đối tượng của lớp.
Cần lưu ý rằng mức độ lồng nhau của các không gian tên con là không giới hạn (có thể tạo không gian tên con trong không gian tên con và cứ tiếp tục như vậy).
Vậy, hãy hoàn thành ví dụ được mô tả ở trên.
Đối với lớp Page từ tệp /admin/data/page.php,
chúng ta chỉ định không gian tên Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
Đối với lớp Page từ tệp /admin/view/page.php,
chúng ta chỉ định không gian tên Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Hãy tạo các đối tượng của lớp chúng ta:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Giả sử bạn có thư mục modules/cart.
Hãy làm sao cho tất cả các lớp từ thư mục này
thuộc về không gian tên
Modules\Cart.
Giả sử bạn có thư mục modules/shop/cart/.
Hãy làm sao cho tất cả các lớp từ thư mục này
thuộc về không gian tên
Modules\Shop\Cart.