[Laravel] 01 – Sử dụng namespace trong Lavarel

Từ phiên bản PHP 5.3 hỗ trợ namespace. Điều này có nghĩa là từ phiên bản trước không hỗ trợ, nếu bạn sử dụng một package bên ngoài có tên là User rồi thì bạn không thể tạo class User trong phần code của riêng bạn. Đây là một cải thiện của PHP, chấm dứt sự xấu hổ trước kia khi các class đều là dạng phẳng.

1. Khi không sử dụng np

Khai báo Global np (Sử dụng bất kỳ đâu)

Khai báo sử dụng lớp Eddard

(Đây là những gì PHP trước giờ chúng ta vẫn làm).

2. Sử dụng namespacing trong Lavarel

Khai báo

Sử dụng np

Trong trường hợp này sẽ sử dụng các hàm của lớp Eddard trong np Stark. Các bạn lưu ý nếu khai báo $ed = new Eddard(); sẽ là đối tượng của Global np;

Lưu ý, có khả năng bạn sử dụng class Eddard() trong global np trong np Start, khi này ta sử dụng dấu \ để đặc tả lớp sử dụng trong global np.

Trong np Start sử dụng np Tully, lớp Edmure(). Có một cách khác là sử dụng từ khóa use để khai báo np sau đó khai báo lớp như bình thường.

Đây là một mẹo khi bạn sử dụng 2 Class có tên giống nhau trong cùng 1 np. Ví như sau:

Bạn có thể sử dụng bao nhiêu np tùy ý muốn sử dụng của bạn. điều này giúp bạn quản lý các project lớn rất tốt cũng như sử dụng hiệu quả các thiết kế của mình.

Tuy có nhiều lợi điểm sử dụng np từ PHP 5.3 nhưng cũng chưa hoàn toàn là hoàn hảo, vẫn có giới hạn. Như trong Java bạn có thể import toàn bộ class trong 1 np bằng ký tự * còn trong PHP bạn phải use từng lớp một. Để vượt qua điều này một cách tạm thời bạn có thể dùng cặp use as để hạn chế gõ từng class một. (Với nhu cầu của tôi cũng không cần quá nhiều class trong một gói thì vấn đề này không nghiêm trọng lắm)

(Ở đây bạn không thể use Dayle\* )

Have a good day with Lavarel!

Kevin ([email protected])

Tham khảo NameSpace – Dayle Rees – Code Bright – Lavarel Framework version