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à AppControllers
và bên trong nó là một file test.php
với nội dung như sau
<?php namespace AppControllers; function exam_A() { echo 'Chào bạn<br/>'; } Class exam_B { public static function myMethod() { echo 'Xin chào các bạn'; } }
[danger-box text=’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'; AppControllersexam_A(); AppControllersexam_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 AppControllersexam_B; $result = new exam_B; $result->myMethod();
Đặt bí danh cũng bằng cách sử dụng as
use AppControllersexam_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é!