namespace 1 (ok)
https://www.brainbell.com/php/namespaces.html#creating
Creating a namespace
Để tạo một namespace trong PHP, hãy sử dụng từ khóa namespace theo sau là tên namespace. Khai báo namespace phải là dòng đầu tiên sau khi mở thẻ <? Php:
Khi
namespace
được khai báo ở đầu tệp PHP, tất cả mã trong tệp đó thuộc vềnamespace
đó. Trong ví dụ trên, các chức năng aFunciton và bFactor thuộc về brainbell.
Cũng có thể có hai hoặc nhiều namespace
trong một tệp bằng cách gói mã cho namespace
trong dấu ngoặc nhọn:
Lưu ý: Cách sử dụng này không phải là tiêu chuẩn thực hành. Mặc dù bạn có thể khai báo nhiều
namespace
trong một tệp PHP, nhưng đây không phải là cách thực hành mã hóa tốt.
Một tệp không khai báo từ khóa
namespace
ở trên cùng; thuộc vềnamespace
toàn cầu. Ví dụ:
Global namespace
namespace example
Khi bạn đã khai báo một namespace
ở đầu tệp PHP, tất cả mã trong tệp đó thuộc về namespace
đó. Để sử dụng một lớp, hàm hoặc hằng được khai báo trong cùng một namespace
, chỉ cần viết tên của nó như bình thường, ví dụ: $var = aFunction ();
Để sử dụng một lớp được đặt tên, hàm hoặc hằng từ bên ngoài một namespace
hãy viết tênnamespace
, theo sau là dấu gạch chéo ngược \, theo sau là lớp, hàm hoặc tên hằng, ví dụ:
Hãy để cùng nhau tạo ra tên hàm aFactor bên trong b.php:
Ví dụ trên sẽ tạo ra lỗi sau nếu bạn loại bỏ namespace brainbell; từ đầu tệp a.php:
Nhờ
namespace
PHP, tên của cả hai hàm aFunction () không còn xung đột.
Sub-namespaces
Bạn cũng có thể tạo các namespace
phụ, giống như các thư mục con (hoặc thư mục con) trong một hệ thống tệp. Điều này cho phép bạn tạo một hệ thống phân cấp namespace
. Bạn tách từng cấp độ namespace
bằng một backslash \
character:
Đoạn mã trên khai báo namespace
template
bên trong namespace
của brainbell
. Hãy để khai báo hàm cùng tên aFactor bên trong tệp tên không gian con sub-namespaced và lưu nó dưới dạng c.php.
Tiếp theo, chỉnh sửa b.php (mà chúng tôi đã tạo trong ví dụ trước) và bao gồm tệp c.php. Bây giờ bạn có thể thấy rằng tất cả các tệp a.php, b.php và c.php đã khai báo hàm aFactor () nhưng chúng không xung đột với nhau cũng như không tạo ra bất kỳ lỗi nào vì tất cả chúng đều ở các namespace
khác nhau:
Hãy để cùng nhau tạo một tập tin d.php khác và viết đoạn mã sau để gọi brainbell\template\aFunction() từ mã nằm trong namespace
của brainbell
:
Bạn có thể chỉ định các
namespace
bằng cách sử dụng ký hiệu tương đối, giống như làm việc với các đường dẫn tương đối.
Namespace aliases
Nếu bạn làm việc với một hệ thống phân cấpnamespace
lớn, việc chỉ định tên namespace
đầy đủ mỗi lần có thể gây mệt mỏi:
Để giải quyết vấn đề này, bạn có thể sử dụng bí danh namespace
, hoạt động giống như một liên kết tượng trưng trong các hệ thống tệp UNIX. Để tạo bí danh bạn viết:
Khi bạn đã tạo một bí danh, bạn có thể sử dụng nó thay cho tênnamespace
đầy đủ:
Bạn có thể bỏ qua câu lệnh as (và tên theo sau), trong trường hợp đó, câu lệnh use sử dụng phần cuối của tên namespace
làm bí danh. Vì vậy, hai dòng mã sau đây là tương đương:
Summary
namespace
giúp bạn tránh đặt tên xung đột giữa các thư viện hoặc mã chia sẻ khác.Cũng như các hàm, bạn cũng có thể sử dụng các
namespace
với các lớp và hằng (nhưng bạn phải khai báo chúng bằng từ khóa const chứ không phải với định nghĩa ()).Có thể có nhiều
namespace
trong một tệp, nhưng không được khuyến khích.Nếu bạn đang làm việc trong một
namespace
, thì trình thông dịch sẽ cho rằng các tên đó có liên quan đếnnamespace
hiện tại.Bạn có thể sử dụng từ khóa use để nhập hoặc bí danh một
namespace
, lớp, hàm hoặc hằng số:
Last updated