Không gian tên PHP
Không gian tên PHP
Không gian tên là các vòng loại giải quyết hai vấn đề khác nhau:
- Chúng cho phép tổ chức tốt hơn bằng cách nhóm các lớp làm việc cùng nhau để thực hiện một nhiệm vụ
- Chúng cho phép sử dụng cùng một tên cho nhiều lớp
Ví dụ: bạn có thể có một tập hợp các lớp mô tả một bảng HTML, chẳng hạn như Bảng, Hàng và Ô trong khi cũng có một tập hợp các lớp khác để mô tả đồ nội thất, chẳng hạn như Bàn, Ghế và Giường. Không gian tên có thể được sử dụng để tổ chức các lớp thành hai nhóm khác nhau đồng thời ngăn không cho hai lớp Table và Table bị trộn lẫn với nhau.
Khai báo không gian tên
Không gian tên được khai báo ở đầu tệp bằng namespace
từ khóa:
Cú pháp
Khai báo một không gian tên được gọi là Html:
namespace Html;
Lưu ý: Một namespace
khai báo phải là điều đầu tiên trong tệp PHP. Mã sau sẽ không hợp lệ:
<?php
echo "Hello World!";
namespace Html;
...
?>
Hằng số, lớp và hàm được khai báo trong tệp này sẽ thuộc không gian tên Html :
Thí dụ
Tạo một lớp Bảng trong không gian tên Html:
<?php
namespace Html;
class Table {
public $title = "";
public
$numRows = 0;
public function message() {
echo "<p>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
Để tổ chức thêm, có thể có các không gian tên lồng nhau:
Cú pháp
Khai báo một không gian tên được gọi là Html bên trong một không gian tên được gọi là Mã:
namespace Code\Html;
Sử dụng Không gian tên
Bất kỳ mã nào theo sau một namespace
khai báo đang hoạt động bên trong không gian tên, vì vậy các lớp thuộc không gian tên có thể được khởi tạo mà không cần bất kỳ định tính nào. Để truy cập các lớp từ bên ngoài một không gian tên, lớp đó cần phải có không gian tên gắn liền với nó.
Thí dụ
Sử dụng các lớp từ không gian tên Html:
$table = new Html\Table()
$row = new Html\Row();
Khi nhiều lớp từ cùng một không gian tên đang được sử dụng cùng một lúc, thì việc sử dụng namespace
từ khóa sẽ dễ dàng hơn:
Thí dụ
Sử dụng các lớp từ không gian tên Html mà không cần bộ định nghĩa Html \:
namespace Html;
$table = new Table();
$row = new Row();
Bí danh không gian tên
Có thể hữu ích nếu đặt một không gian tên hoặc bí danh cho lớp để giúp viết dễ dàng hơn. Điều này được thực hiện với use
từ khóa:
Thí dụ
Đặt bí danh cho không gian tên:
use Html as H;
$table = new H\Table();
Thí dụ
Đặt bí danh cho lớp:
use Html\Table as
T;
$table = new T();