Nội dung
- 1 Cách tiếp cận tốt nhất để làm việc với các lớp và không gian tên trong PHP là gì?
- 2 Không gian tên mặc định trong PHP là gì?
- 3 Không gian tên PHP hoạt động như thế nào?
- 4 Làm thế nào để sử dụng thư viện PHP có tên không có nhà soạn nhạc?
- 5 Khi nào nên sử dụng không gian tên đủ điều kiện trong PHP?
Cách tiếp cận tốt nhất để làm việc với các lớp học và không gian tên trong PHP là gì?
Để giải quyết vấn đề này, các không gian tên đã được giới thiệu trong PHP kể từ PHP 5.3. Cách tốt nhất để hiểu các không gian tên là tương tự với khái niệm cấu trúc thư mục trong một hệ thống tập tin. Thư mục được sử dụng để nhóm các tệp liên quan phục vụ mục đích của không gian tên.
Tôi có nên sử dụng không gian tên trong PHP không?
1 câu trả lời. Mục tiêu chính của không gian tên là ngăn chặn các vụ va chạm tên, nhiều hơn chúng được sử dụng để nhóm các lớp, phương thức. Như bạn đã đề cập, có rất nhiều lớp học trong một dự án Laravel, vì vậy các không gian tên sẽ phải được sử dụng để ngăn chặn các vụ va chạm sẽ xảy ra trong các dự án lớn.
Không gian tên mặc định trong PHP là gì?
Không gian tên được xác định như thế nào? Theo mặc định, tất cả các tên không đổi, lớp và chức năng được đặt trong một không gian toàn cầu - giống như trước khi các không gian tên được hỗ trợ. Mã đặt tên được xác định bằng cách sử dụng một từ khóa không gian tên duy nhất ở đầu tệp PHP của bạn.
__ không gian tên __ trong PHP là gì?
Trong PHP, từ khóa không gian tên được sử dụng để xác định không gian tên. Nó cũng được sử dụng như một toán tử để yêu cầu quyền truy cập vào một số phần tử nhất định trong không gian tên hiện tại. Không đổi __namespace__ Tên của không gian tên hiện tại.
Làm thế nào để không gian tên PHP hoạt động?
Cách các không gian tên PHP hoạt động. Nói tóm lại, một không gian tên trong PHP được đặt ở đầu tệp và chỉ định rằng tất cả các mã trong tệp đó sẽ được đặt trong không gian tên. Khi chúng tôi đi vào chi tiết hơn một chút, các không gian tên này ảnh hưởng đến các lớp, giao diện, chức năng và hằng số. Nó không ảnh hưởng đến các biến.
Tại sao không gian tên chỉ được tham chiếu trong lib1.php?
Mặc dù chúng tôi bao gồm cả lib1.php và lib2.php, các định danh myconst, myfunction và myClass sẽ chỉ có mã tham chiếu trong lib1.php. Điều này xảy ra do mã MyApp1.php nằm trong cùng một không gian tên Applib1: không gian tên có thể được nhập với toán tử sử dụng, ví dụ:
Làm thế nào để sử dụng thư viện PHP có tên không có nhà soạn nhạc?
Nó phụ thuộc vào tiêu chuẩn tự động tải và cách tên lớp của các thư viện được đặt tên. Đôi khi bạn phải phân chia tên lớp trên _ và sử dụng phần tử đầu tiên cho tên direcotry và thêm nó vào tên lớp. Ví dụ, tôi đã có một thư viện thứ hai với một lớp như Library_parser nhưng cấu trúc là Thư viện/Thư viện-Parser.php.
Làm thế nào một số tên được quảng bá lên không gian tên gốc?
Một số tên được quảng bá trên mạng đối với không gian tên gốc: Tất cả các định nghĩa đều thuộc không gian tên :: Boost :: Tuples, nhưng các tên phổ biến nhất được nâng lên thành không gian tên :: Boost với việc sử dụng các tuyên bố. Những cái tên này là: tuple, make_tuple, tie và get.
Khi nào nên sử dụng các không gian tên đủ điều kiện trong PHP?
Tên đủ điều kiện hoàn toàn hữu ích cho các cuộc gọi chức năng một lần hoặc khởi tạo đối tượng. Tuy nhiên, chúng có thể trở nên không thực tế khi bạn thực hiện nhiều cuộc gọi. Như chúng tôi sẽ khám phá dưới đây, PHP cung cấp các tùy chọn khác để cứu chúng tôi khỏi chuột rút gõ tên. Một định danh có ít nhất một dấu phân cách không gian tên, ví dụ: Lib1myfunction [].
[Php 5> = 5.3.0, Php 7, Php 8]
Trước khi thảo luận về việc sử dụng các không gian tên, điều quan trọng là phải hiểu làm thế nào PHP biết phần tử tên nào được yêu cầu. Một sự tương tự đơn giản có thể được thực hiện giữa các không gian tên PHP và hệ thống tập tin. Có ba cách để truy cập một tệp trong hệ thống tệp:
- Tên tệp tương đối như
foo.txt
. Điều này giải quyết thànhcurrentdirectory/foo.txt
trong đó hiện tại là thư mục hiện đang bị chiếm. Vì vậy, nếu thư mục hiện tại là/home/foo
, tên được giải quyết thành/home/foo/foo.txt
. - Tên đường dẫn tương đối như
subdirectory/foo.txt
. Điều này giải quyết đếncurrentdirectory/subdirectory/foo.txt
. - Tên đường dẫn tuyệt đối như
/main/foo.txt
. Điều này giải quyết đến/main/foo.txt
.
Nguyên tắc tương tự có thể được áp dụng cho các yếu tố đặt tên trong PHP. Ví dụ, một tên lớp có thể được đề cập theo ba cách:
- Tên không đủ tiêu chuẩn, hoặc một tên lớp không bị hủy bỏ như
$a = new foo[];
hoặcfoo::staticmethod[];
. Nếu không gian tên hiện tại làcurrentdirectory/foo.txt
0, điều này sẽ giải quyết thànhcurrentdirectory/foo.txt
1. Nếu mã là mã toàn cầu, không được ký tên, thì điều này sẽ giải quyết thànhcurrentdirectory/foo.txt
2. Một cảnh báo: Tên không đủ tiêu chuẩn cho các hàm và hằng số sẽ giải quyết cho các chức năng và hằng số toàn cầu nếu hàm tên hoặc hằng số không được xác định. Xem bằng cách sử dụng không gian tên: dự phòng vào chức năng/hằng số toàn cầu để biết chi tiết. One caveat: unqualified names for functions and constants will resolve to global functions and constants if the namespaced function or constant is not defined. See Using namespaces: fallback to global function/constant for details. - Tên đủ điều kiện hoặc tên lớp có tiền tố như
currentdirectory/foo.txt
3 hoặccurrentdirectory/foo.txt
4. Nếu không gian tên hiện tại làcurrentdirectory/foo.txt
0, điều này sẽ giải quyết thànhcurrentdirectory/foo.txt
6. Nếu mã là mã toàn cầu, không được ký tên, thì điều này sẽ giải quyết thànhcurrentdirectory/foo.txt
7. - Tên đủ điều kiện hoặc tên tiền tố với toán tử tiền tố toàn cầu như
currentdirectory/foo.txt
8 hoặccurrentdirectory/foo.txt
9. Điều này luôn giải quyết cho tên theo nghĩa đen được chỉ định trong mã,currentdirectory/foo.txt
1.
Dưới đây là một ví dụ về ba loại cú pháp trong mã thực tế:
file1.php
/home/foo
1
/home/foo
2
/home/foo
3file2.php
/home/foo
4
/home/foo
2
/home/foo
6 Lưu ý rằng để truy cập bất kỳ lớp toàn cầu, hàm hoặc hằng số, có thể sử dụng tên đủ điều kiện, chẳng hạn như \ strlen [] hoặc \ Exception hoặc /home/foo
7.\strlen[] or \Exception or /home/foo
7.
Ví dụ #1 truy cập các lớp, chức năng và hằng số toàn cầu từ trong không gian tên
/home/foo
8
/home/foo
9
/home/foo/foo.txt
0Richard tại Richard-sumilang dot com ¶
14 năm trước
/home/foo/foo.txt
1
/home/foo/foo.txt
2
/home/foo/foo.txt
3
/home/foo/foo.txt
4
/home/foo/foo.txt
5Ẩn danh ¶ ¶
7 năm trước
/home/foo/foo.txt
6
/home/foo/foo.txt
7
/home/foo/foo.txt
8Lukas Z ¶
10 năm trước
/home/foo/foo.txt
9
subdirectory/foo.txt
0
subdirectory/foo.txt
1Tom tại Tomwardrop Dot Com ¶ ¶
10 năm trước
subdirectory/foo.txt
2
subdirectory/foo.txt
3
subdirectory/foo.txt
4
subdirectory/foo.txt
5Tom tại Tomwardrop Dot Com ¶ ¶
Philip Dot Preisser tại Arcor Dot de ¶
subdirectory/foo.txt
6
subdirectory/foo.txt
7
subdirectory/foo.txt
8
subdirectory/foo.txt
9