Namespace trong PHP dùng để làm gì?

Đây là bài 37/39 bài của series môn học Lập trình Web PHP

Trong bài này, chúng ta sẽ tìm hiểu về namespace trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.

1. Namespace trong PHP là gì?

Namespace trong PHP giúp gom nhóm các lớp (class), hằng (constant), hàm (function) cùng thực hiện một nhiệm vụ với nhau. Việc này giúp tổ chức code tốt hơn và tránh nhầm lẫn giữa các lớp, hằng, hàm cùng tên nhưng chức năng khác nhau.

Ví dụ, một chương trình PHP lớn gồm nhiều file. Các file này chứa các lớp (class) thực hiện những chức năng khác nhau. Nhưng chúng có thể có những lớp (class) cùng tên với nhau.

Có trường hợp, chúng ta cần include hoặc require nhiều file để thực hiện một chức năng nào đó. Nếu chúng ta gọi một lớp (class) cùng tên, chương trình sẽ không biết chúng ta gọi lớp nào trong file nào. Cần khai báo namespace cho các lớp để giải quyết trường hợp này.

2. Khai báo một namespace trong PHP

Namespace được khai báo ở dòng đầu tiên sau cú pháp <?php của file script .php. Sử dụng từ khóa namespace. Ví dụ, chúng ta khai báo namespace Html.

namespace Html;

Lưu ý: Phải khai báo namespace ở dòng đầu tiên cú pháp <?php của file script .php. Khai báo namespace như bên dưới sẽ bị lỗi.

<?php
echo "Hello World!";
namespace Html;
?>

Hằng (constant), lớp (class), hàm (function) được khai báo trong file Html.php bên dưới đều thuộc về namespace Html.

<?php
namespace Html;
class Table {
  public $title = "";
  public $numRows = 0;

  public function message() {
    echo "<p>Table '{$this->title}' has {$this->numRows} rows.</p>";
  }
}

class Row {
  public $numCells = 0;
  public function message() {
    echo "<p>The row has {$this->numCells} cells.</p>";
  }
}
?>

3. Sử dụng namespace trong PHP

Để sử dụng các lớp từ một namespace, chúng ta cần chỉ định rõ namespace đó. Ví dụ:

<?php
include "Html.php";

$table = new Html\Table();
$table->title = "My table";
$table->numRows = 5;

$row = new Html\Row();
$row->numCells = 3;
?>

<html>
<body>

<?php $table->message(); ?>
<?php $row->message(); ?>

</body>
</html>
Kết quả
Table 'My table' has 5 rows.

The row has 3 cells.

Chúng ta có thể sử dụng bí danh (alias) để giúp viết ngắn gọn hơn tên namespace.

<?php
include "Html.php";
//alias of Html namespace
use Html as H;
$table = new H\Table();
$table->title = "My table";
$table->numRows = 5;
?>

<html>
<body>

<?php $table->message(); ?>

</body>
</html>

Tham khảo: PHP Namespaces

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Phương thức tĩnh (static method) và thuộc tính tĩnh (static property) trong PHPXử lý html form với PHP >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.