Namespace cho phép các lớp / hàm / hằng cùng tên được sử dụng trong các ngữ cảnh khác nhau mà không có bất kỳ xung đột nào.

Giả sử trong lớp có tới 3 ông tên là Nam thì làm sao để phân biệt được họ. Cách tốt nhất là lấy họ và tên là được. Như vậy Namespace cũng tương tự như vậy. Khi lập trình mã nguồn sẽ có nhiều người cùng tham gia. Trường hợp Class, biến, hằng trùng nhau là điều khó tránh khỏi.

Chính vì vậy Namespace được ra đời giúp giải quyết vấn đề này. Để thực hành tốt nhất bạn nên đặt theo thư mục.

Tạo Namespace trong PHP

Ví dụ: Mình sẽ tạo ra một thư mục là App\Controllers và bên trong nó là một file test.php với nội dung như sau

<?php
namespace App\Controllers;

function exam_A() {
    echo 'Chào bạn<br/>';
}

Class exam_B {
    public static function myMethod() {
        echo 'Xin chào các bạn';
    }
}
Lưu ý: Tên của namespace sẽ phải sử dụng dấu " ".

Tiếp theo mình sẽ tạo ra một tập tin khác tên là test_out.php với nội dung

<?php

require 'test.php';

App\Controllers\exam_A();

App\Controllers\exam_B::myMethod();

Kết quả in ra màn hình là

Chào bạn
Xin chào các bạn

Sử dụng từ khóa use trong Namespace

Cũng với ví dụ trên giờ mình sẽ thêm use phía trước đường dẫn Namespace. Khi dùng từ khóa use sẽ không cần phải dùng tới require hay include nữa.

use App\Controllers\exam_B;

$result = new exam_B;
$result->myMethod();

Đặt bí danh cũng bằng cách sử dụng as

use App\Controllers\exam_B as eB;

Cách sử dụng Namespace hiệu quả

  • Bạn sẽ cần phải ngăn ngừa xung đột tên thư mục. Vì vậy, tốt hơn là thêm tất cả các lớp vào một Namespace. (Nên đặt theo tên thư mục).
  • Nhóm các lớp tương tự vào một Namespace con.
  • Sử dụng cấu trúc thư mục một cách chính xác.

Như vậy với bài học này bạn đã được tìm hiểu về Namespace. Nó sẽ thường gặp khi làm việc với các Framework mô hình MVC như Laravel, Codeigniter… Và đây cũng là một phần kiến thức trong lập trình hướng đối tượng (OOP). Vì vậy bạn cần tìm hiểu và thực hành thuần thục nhé!

Cùng chủ đề

Category:
Tags:

Bình luận!

Xin lưu ý rằng tất cả các bình luận đều được kiểm duyệt theo chính sách bảo mật và tất cả các liên kết đều là nofollow. KHÔNG sử dụng từ khóa trong trường tên. Hãy để lại một cuộc trò chuyện cá nhân và ý nghĩa. *