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.
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 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.
Tham khảo: PHP Namespaces
- Hướng dẫn cài đặt và sử dụng Arduino IDE
- Thuật toán sắp xếp nổi bọt [Bubble Sort]
- Nạp chồng hàm [function overloading] là gì?
- Khái niệm kế thừa và đơn kế thừa trong lập trình hướng đối tượng
- Java collections framework: Map interface và lớp HashMap
PHP programming web programming
Từ PHP 5.3 namespaces được giới thiệu để đóng gói các item và làm cho script dễ quản lý hơn. Khi một trang web trở nên lớn hơn, việc giữ tất cả các file class trong cùng một thư mục sẽ khó hơn. Ngoài ra, chúng ta phải sử dụng tên rất dài cho các file và class, Đó là một trở ngại trong quản lý mã nguồn. Namespaces được giới thiệu để ngăn chặn vấn đề này. Chúng ta hãy xem nó hoạt động như thế nào! Giả sử chúng ta có cấu trúc file như
sau:class
animals
Dog.php
Cat.php
Goat.php
birds
Owl.php
Peacock.php
pets
Dog.php
Cat.php
MainClass1.php
MainClass2.php
MainClass3.php
Trong cấu trúc thư mục trên bạn thấy có file Dog.php và Cat.php được lưu trong các thư mục khác nhau, chúng là các class khác nhau hoàn toàn nhưng lại trùng tên,vậy làm sao để PHP biết bạn đang muốn gọi class nào khi thực hiện autoload, do đó chúng ta sử dụng thêm namespace để PHP có thể hiểu 2 file Dog và Cat trên là 2 file khác nhau hoàn toàn.