Không gian tên làm gì trong php?
tôi có một ý tưởng. Hãy làm chủ các không gian tên PHP. và hãy làm điều đó trong vòng chưa đầy 5 phút. Nhâm nhi một chút cà phê. Đi nào Show Gặp gỡ dòng 1 - 2class Foo{hàm công khai doAwesomeThings(){}} Nói xin chào dòng 1 - 2class Foo{public function doAwesomeThings(){echo "Hi Foo. \N";}} Để khởi tạo lớp mới yêu thích của chúng ta, tôi sẽ chuyển sang một tệp khác và nói - đánh trống - dòng 1 - 2 yêu cầu 'Thức ăn. php';$foo = new Foo(); tada. Chúng ta thậm chí có thể gọi một phương thức trên nó. dòng 1 - 2 yêu cầu 'Thức ăn. php';$foo = new Foo();$foo->doAwesomeThings(); nó sẽ làm việc? . Tôi có thể mở một thiết bị đầu cuối và chạy Ngay bây giờ, dòng 1 - 2namespace Acme\Tools;class Foo{. dòng 7 - 10} Thông thường không gian tên của một lớp khớp với thư mục của nó, nhưng điều đó không bắt buộc về mặt kỹ thuật. Tôi vừa mới phát minh ra cái này Xin chúc mừng. Bạn của chúng tôi dòng 1 - 2 yêu cầu 'Thức ăn. php';$foo = new \Acme\Tools\Foo();. dòng 6 - 8 giống như bạn có thể sử dụng đường dẫn tuyệt đối để tham chiếu tệp trong hệ thống tệp của mình Khi chúng tôi thử tập lệnh ngay bây giờ Nó vẫn làm việc Và. đó thực sự là. Không gian tên về cơ bản là một cách để. làm cho tên lớp của bạn dài hơn. Thêm không gian tên. sau đó tham khảo lớp bằng cách sử dụng không gian tên cộng với tên lớp. Đó là nó Nhưng mà. có những tên lớp dài này ngay giữa mã của bạn là một điều đáng tiếc. Để khắc phục điều đó, PHP namespaces có thêm một điều đặc biệt. tuyên bố dòng 1 - 2 yêu cầu 'Thức ăn. php';sử dụng Acme\Tools\Foo làm SomeFooClass;. dòng 6 - 10 Điều này tạo ra một. loại. "đường tắt". Bất kỳ nơi nào khác trong tệp này, bây giờ chúng ta chỉ cần gõ dòng 1 - 2 yêu cầu 'Thức ăn. php';sử dụng Acme\Tools\Foo làm SomeFooClass;$foo = new SomeFooClass();. dòng 8 - 10 và PHP sẽ biết rằng chúng ta đang thực sự đề cập đến tên lớp dài. Hoặc là. nếu bạn bỏ qua phần dòng 1 - 2 yêu cầu 'Thức ăn. php';sử dụng Acme\Tools\Foo;$foo = new Foo();. dòng 8 - 10 Vì vậy, không gian tên làm cho tên lớp dài hơn. và câu lệnh Trong mã PHP hiện đại, gần như tất cả các lớp bạn xử lý sẽ nằm trong một không gian tên. ngoại trừ các lớp PHP cốt lõi. Đúng, các lớp PHP cốt lõi không tồn tại trong một không gian tên. điều đó có nghĩa là chúng sống ở không gian tên "gốc" - giống như một tệp ở thư mục gốc của hệ thống tệp của bạn Hãy chơi với đối tượng dòng 1 - 8$foo->doAwesomeThings();$dt = new DateTime();echo $dt->getTimestamp(). "\N"; Khi chúng tôi chạy kịch bản Nó hoạt động hoàn hảo. Nhưng mà. bây giờ hãy chuyển cùng mã đó vào phương thức dòng 1 - 2namespace Acme\Tools;class Foo{public function doAwesomeThings(){echo "Hi Foo. \n";$dt = new DateTime();echo $dt->getTimestamp(). "\N";}} Bây giờ hãy thử mã Ah. Nó phát nổ. Và kiểm tra lỗi đó
Tên thật của lớp chỉ nên là
Có hai cách để khắc phục điều này. Đầu tiên là sử dụng tên lớp "đủ điều kiện". Vì vậy, dòng 1 - 2namespace Acme\Tools;class Foo{public function doAwesomeThings(){. dòng 9 - 10$dt = new \DateTime();. dòng 12}} Chuẩn rồi. hoạt động giống như một hệ thống tập tin Hoặc là. bạn có thể sử dụng dòng 1 - 2namespace Acme\Tools;use DateTime;class Foo{public function doAwesomeThings(){. dòng 11 - 12$dt = new DateTime();. dòng 14}} Đó thực sự là điều tương tự. không có Và. đã được thực hiện. Không gian tên làm cho tên lớp của bạn dài hơn, sử dụng các câu lệnh cho phép bạn tạo "lối tắt" để bạn có thể sử dụng tên ngắn trong mã của mình và toàn bộ hệ thống hoạt động chính xác như các tệp bên trong thư mục Tôi có nên sử dụng không gian tên PHP không?Một không gian tên được sử dụng để tránh các định nghĩa xung đột và giới thiệu tính linh hoạt và tổ chức hơn trong cơ sở mã. Cũng giống như các thư mục, không gian tên có thể chứa một hệ thống phân cấp được gọi là không gian tên con
Sự khác biệt giữa sử dụng và không gian tên trong PHP là gì?Không gian tên là để tránh xung đột tên lớp, vì vậy bạn có thể có hai tên lớp giống nhau dưới hai không gian tên khác nhau. Sử dụng giống như PHP bao gồm . Vui lòng đăng nhập hoặc tạo tài khoản để tham gia vào cuộc trò chuyện này.
Tại sao chúng ta sử dụng không gian tên trong laravel?Không gian tên cho phép bạn phân vùng mã thành các nhóm logic bằng cách xác định chúng vào “không gian tên” của riêng chúng . Một chuỗi văn bản sau từ khóa "không gian tên" xác định không gian tên và tất cả mã bên dưới nó sẽ nằm trong không gian tên đó. Không gian tên cũng cung cấp một cách để nhóm các hàm và hằng số của giao diện.
Sự khác biệt giữa không gian tên và lớp là gì?Không gian tên và các lớp là hai khái niệm khác nhau. Các lớp là kiểu dữ liệu. Các lớp về cơ bản là phiên bản mở rộng của các cấu trúc. Các lớp có thể chứa các thành viên dữ liệu và các hàm với tư cách là thành viên, nhưng các không gian tên có thể chứa các biến và hàm bằng cách nhóm chúng thành một |