Cú pháp không gian tên trong OOP trong PHP
Để đặt không gian tên cho một lớp, cần
dòng đầu tiên của tệp, nơi lưu trữ lớp đó
viết lệnh namespace,
và sau nó, cách một khoảng trắng - tên của
không gian đó.
Nếu lớp thuộc về một không gian tên nào đó, thì để tạo đối tượng của lớp cần phải chỉ ra không chỉ tên lớp, mà cả không gian tên của nó, được phân cách bằng dấu gạch chéo ngược. Hãy xem xét một ví dụ.
Giả sử chúng ta có lớp Page, không thuộc về
bất kỳ không gian tên nào. Khi đó đối tượng
của lớp này chúng ta sẽ tạo như sau:
<?php
$page = new Page;
?>
Bây giờ giả sử lớp này thuộc về không gian tên
Admin. Trong trường hợp này, đối tượng của
lớp này chúng ta sẽ tạo theo cách sau:
<?php
$page = new \Admin\Page;
?>
Hãy phân chia các lớp dành cho người dùng và các lớp dành cho quản trị viên vào các không gian tên khác nhau, để tránh các xung đột lớp đã mô tả ở trên.
Đối với lớp Page từ tệp /admin/page.php
hãy chỉ định không gian tên Admin:
<?php
namespace Admin;
class Page
{
}
?>
Còn đối với lớp Page từ tệp /users/page.php
hãy chỉ định không gian tên Users:
<?php
namespace Users;
class Page
{
}
?>
Bây giờ hãy trong tệp /index.php
tạo đối tượng của lớp Page thứ nhất và thứ hai:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Giả sử bạn có thư mục core và thư mục
project. Trong mỗi thư mục có lớp
Controller riêng của nó. Hãy làm sao để
những lớp này thuộc về các không gian tên khác nhau.
Trong tệp index.php hãy tạo đối tượng
của lớp thứ nhất và thứ hai.