2010-11-21 32 views

Trả lời

9

Luôn luôn như sau - điều tương tự cũng áp dụng cho echo, print và các cấu trúc ngôn ngữ khác. Không bao giờ thêm dấu ngoặc đơn bổ sung sau khi cấu trúc ngôn ngữ!

Lý do rất đơn giản: Sử dụng dấu ngoặc đơn làm cho bạn tin rằng require là một chức năng - mà không phải! Ví dụ:

if (require('file.php') == false) { 
    // do stuff 
} 

Bạn - và thậm chí hầu hết các nhà phát triển PHP cao cấp - sẽ nói rằng điều này so sánh giá trị trả lại của require. Nhưng nó không! PHP giải thích điều này như:

if (require (('file.php') == false)) { 
    // do stuff 
} 

đó là:

if (require '') { 
    // do stuff 
} 

Nếu bạn sử dụng dấu ngoặc đơn với ngôn ngữ xây dựng bạn có thể cũng viết:

require(((((((((((((((((((('file.php')))))))))))))))))))) 

Hoặc bạn sẽ không bao giờ viết:

array(('hi')); 

Điều đó cũng giống như vô nghĩa.

+0

"Không bao giờ sử dụng dấu ngoặc đơn với cấu trúc ngôn ngữ". Vì vậy, bạn không bao giờ sử dụng 'mảng' hoặc' thoát' với một tham số? Điều này thực sự là một vấn đề ưu tiên vận hành, và một vấn đề khá giả tạo ở đó. Không có đề xuất nào trong câu hỏi.hãy kiểm tra giá trị trả về không tồn tại. Và nếu bạn * ghi * yêu cầu ('file.php') == false', bạn sẽ gặp lỗi nghiêm trọng ngay lập tức. Vì vậy, không có khả năng lỗi tinh vi. –

+3

@Metthew: Với 'mảng' dấu ngoặc đơn là một phần của cấu trúc. Với 'require', chúng không phải. Bạn không thể bỏ qua chúng. – NikiC

+0

PHP chỉ bị hỏng. – Gumbo

Các vấn đề liên quan