Hướng dẫn dùng null 0 trong PHP

answer

226

Đó là ngôn ngữ cụ thể, nhưng trong PHP:

Nullnghĩa là " không có gì ". Var chưa được khởi tạo.

Falsecó nghĩa là " không đúng trong ngữ cảnh boolean ". Được sử dụng để thể hiện rõ ràng bạn đang giải quyết các vấn đề logic.

0là một int. Không liên quan gì đến phần còn lại ở trên, được sử dụng cho toán học.

Bây giờ, điều khó khăn là trong các ngôn ngữ động như PHP, tất cả chúng đều có giá trị trong ngữ cảnh boolean , [trong PHP] là như vậy False.

Nếu bạn kiểm tra nó với ==, nó đang kiểm tra giá trị boolean, vì vậy bạn sẽ nhận được sự bình đẳng. Nếu bạn kiểm tra nó với ===, nó sẽ kiểm tra loại, và bạn sẽ nhận được sự bất bình đẳng.

Vậy tại sao chúng lại hữu ích?

Vâng, hãy nhìn vào strrpos[]chức năng. Nó trả về False nếu nó không tìm thấy gì, nhưng 0 nếu nó đã tìm thấy thứ gì đó ở đầu chuỗi!


Và tất nhiên, nếu bạn đối phó với các trạng thái:

Bạn muốn tạo sự khác biệt giữa DebugMode = False[đặt thành tắt], DebugMode = True[đặt thành bật] và DebugMode = Null[hoàn toàn không đặt, sẽ dẫn đến gỡ lỗi khó ;-]].

226 hữu ích 5 bình luận chia sẻ

answer

46

nullnull. falsefalse. Đáng buồn nhưng là sự thật.

không có nhiều tính nhất quán trong PHP [mặc dù nó đang được cải thiện trên các bản phát hành mới nhất, nhưng có quá nhiều khả năng tương thích ngược]. Mặc dù thiết kế mong muốn một số nhất quán [được nêu trong câu trả lời đã chọn ở đây], tất cả đều trở nên khó hiểu khi bạn xem xét phương thức trả về việc sử dụng false/ nulltheo những cách không dễ lý giải.

Bạn sẽ thường thấy null được sử dụng khi họ đã sử dụng false cho một thứ gì đó. ví dụ: filter_input []. Chúng trả về false nếu biến không thành công bộ lọc và null nếu biến không tồn tại [không tồn tại có nghĩa là nó cũng không thành công bộ lọc?]

Các phương thức trả về false / null / string / etc thay thế cho nhau là một sự tấn công khi tác giả quan tâm đến loại lỗi, ví dụ: filter_input[]bạn có thể kiểm tra ===falsehoặc ===nullnếu bạn quan tâm tại sao xác thực không thành công. Nhưng nếu bạn không làm vậy, đó có thể là một cạm bẫy vì người ta có thể quên thêm séc ===nullnếu họ chỉ nhớ viết trường hợp kiểm tra cho ===false. Và hầu hết các công cụ kiểm tra / phạm vi bảo hiểm của đơn vị php sẽ không thu hút sự chú ý của bạn đối với đường dẫn mã bị thiếu, chưa được kiểm tra!

Cuối cùng, đây là một số thú vị với kiểu tung hứng. thậm chí không bao gồm mảng hoặc đối tượng.

var_dump[ 0 true [string match]
'*' === true -> false [numberic match]

[int]'*' == true -> false
[string]'*' == true -> true

Tính nghiêm ngặt của PHP7 là một bước tiến, nhưng có lẽ là chưa đủ. //web-techno.net/typing-with-php-7-what-you-shouldnt-do/

-1 hữu ích 0 bình luận chia sẻ

Chủ Đề