CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết trên blog CFSDN này cung cấp giải thích chi tiết về sự khác biệt giữa các hằng số định nghĩa () và const trong PHP, được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.
Các ví dụ trong bài viết này mô tả sự khác biệt giữa các hằng số định nghĩa() và const trong PHP. Share cho mọi người tham khảo nhé, chi tiết như sau:
Lời nói đầu.
Hôm nay tôi thấy một bài viết rất thú vị khác trên Stackoverflow nên tôi đã dịch nó và nhặt nó lên. Bài viết được viết bởi NikiC, một trong những thành viên phát triển PHP và độ tin cậy của nó là không thể nghi ngờ.
chữ.
Trong PHP5.3, có hai cách để xác định hằng số:
- sử dụng
hằng số
Từ khóa
- sử dụng
định nghĩa()
phương pháp
?
1
2
|
hằng số
ĐỒ ĂN =
'THANH'
;
định nghĩa(
'ĂN'
,
'THANH'
);
|
Sự khác biệt cơ bản giữa hai phương thức là const xác định hằng số khi mã được biên dịch, trong khi định nghĩa xác định hằng số khi mã được chạy. Điều này khiến const có những nhược điểm sau:
-
hằng số
Không thể được sử dụng trong các câu lệnh có điều kiện. Nếu bạn muốn xác định một biến toàn cục,hằng số
Nó phải ở cấp độ ngoài cùng của toàn bộ mã:
?
1
2
3
4
5
6
7
|
nếu như
(...) {
hằng số
ĐỒ ĂN =
'THANH'
;
}
nếu như
(...) {
định nghĩa(
'ĂN'
,
'THANH'
);
}
|
Bạn có thể hỏi tại sao tôi làm điều này? Một trong những ví dụ phổ biến nhất là khi bạn kiểm tra xem một hằng số đã được xác định chưa:
?
1
2
3
|
nếu như
(!đã định nghĩa(
'ĂN'
)) {
định nghĩa(
'ĂN'
,
'THANH'
);
}
|
-
hằng số
chỉ có thể được sử dụng để khai báo các biến (chẳng hạn như số, chuỗi hoặc true, false, null, _FILE_) vàđịnh nghĩa()
Biểu thức cũng được chấp nhận. Tuy nhiên, sau PHP5.6 const cũng có thể chấp nhận các biểu thức không đổi:
?
1
2
|
hằng số
BIT_5 = 1 << 5;
định nghĩa(
'BIT_5'
, 1 << 5);
|
-
hằng số
Việc đặt tên liên tục chỉ có thể sử dụng văn bản đơn giản vàđịnh nghĩa()
Cho phép bạn đặt tên hằng bằng cách sử dụng bất kỳ biểu thức nào. Bằng cách này chúng ta có thể làm như sau:
?
1
2
3
|
vì
(
$tôi
= 0;
$tôi
< 32; ++
$tôi
) {
định nghĩa(
'CHÚT_'
.
$tôi
, 1 <<
$tôi
);
}
|
-
hằng số
Các hằng số được xác định có phân biệt chữ hoa chữ thường, nhưngđịnh nghĩa
cho phép bạn đặt tham số thứ ba của nó thànhĐÚNG VẬYĐể tắt phân biệt chữ hoa chữ thường:
?
1
2
3
|
định nghĩa(
'ĂN'
,
'THANH'
, ĐÚNG VẬY);
tiếng vọng
ĐỒ ĂN;
tiếng vọng
đồ ăn;
|
Đây là những điểm bạn cần chú ý. Vì vậy, bây giờ tôi sẽ giải thích những điều sau đây, tại sao cá nhân tôi luôn sử dụng const khi không liên quan đến các tình huống trên:
-
hằng số
Dễ đọc và đẹp hơn.
-
hằng số
Mặc định cho hiện tạikhông gian tên
Để xác định các hằng số bên dưới, hãy sử dụngđịnh nghĩa
bạn cần phải viết ra toàn bộkhông gian tên
Đường dẫn đầy đủ đến:
?
1
2
3
4
|
không gian tên
A\B\C;
hằng số
ĐỒ ĂN =
'THANH'
;
định nghĩa(
'A\B\C\FOO'
,
'THANH'
);
|
- Kể từ PHP5.6, hãy sử dụng
hằng số
Mảng cũng có thể được định nghĩa là hằng số. Vàđịnh nghĩa
Tính năng này hiện không được hỗ trợ nhưng nó sẽ được triển khai trong PHP7:
?
1
2
|
hằng số
FOO = [1, 2, 3];
định nghĩa(
'ĂN'
, [1, 2, 3]);
|
- bởi vì
hằng số
Nó được thực thi tại thời điểm biên dịch, vì vậy nó nhanh hơnđịnh nghĩa
Nhanh lên.
Đặc biệt khi sử dụng định nghĩa để định nghĩa một số lượng lớn các hằng số, PHP sẽ chạy rất chậm. Mọi người thậm chí còn phát minh ra những thứ như apc_load_constantshide để tránh vấn đề này.
So với định nghĩa, const có thể tăng gấp đôi hiệu quả của việc xác định hằng số (trên máy phát triển được định cấu hình bằng XDebug, sự khác biệt này sẽ còn lớn hơn). Nhưng xét về thời gian truy vấn thì không có sự khác biệt giữa cả hai (vì cả hai đều sử dụng cùng một bảng truy vấn).
Điều cuối cùng cần lưu ý là const có thể được sử dụng trong các lớp và giao diện, nhưng định nghĩa không thể làm điều này:
?
1
2
3
4
5
6
|
lớp học
Đồ ăn {
hằng số
THANH = 2;
}
lớp học
Căn cứ {
định nghĩa(
'CÁI MÀ'
, 2);
}
|
Tóm tắt.
Trừ khi bạn cần sử dụng biểu thức hoặc xác định hằng số trong các câu lệnh có điều kiện, tốt hơn là chỉ sử dụng const để mã dễ đọc! .
Tôi hy vọng bài viết này sẽ hữu ích cho mọi người trong việc lập trình PHP.
Liên kết gốc: https://www.jianshu.com/p/a38b81433183.
Cuối cùng, bài viết này về giải thích chi tiết về sự khác biệt giữa các hằng số định nghĩa() và const trong PHP kết thúc ở đây. Nếu bạn muốn biết thêm về giải thích chi tiết về sự khác biệt giữa các hằng số định nghĩa() và const trong PHP, vui lòng tìm kiếm. bài viết của CFSDN Hoặc tiếp tục duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!