2010-07-27 66 views
9

thể trùng lặp:
why in some scripts they omit the closing php tag ?>Thẻ đóng PHP không cần thiết?

Như đã giải thích trong Code Igniter style guide, có vẻ như PHP đóng thẻ là không bắt buộc. Nó thậm chí còn nói bạn nên tránh nó vì nhiều lý do.

Bất kỳ ai cũng có thêm thông tin về vấn đề này?

Cảm ơn!

+10

bản sao có thể có của [tại sao trong một số tập lệnh mà họ bỏ qua thẻ đóng php?>] (Http://stackoverflow.com/questions/3219383/why-in-some-scripts-they-omit-the-closing-php -tag) - các bạn có thực sự nhận thấy SO đề xuất câu hỏi khi bạn nhập câu hỏi của bạn không? Các bạn [tìm kiếm ở tất cả] (http://stackoverflow.com/search?q=closing+tags+php)? – Gordon

+0

cũng: http://stackoverflow.com/questions/1656744/when-not-to-close-a-php-file/1656752#1656752 – karim79

+0

SO đề xuất không đề xuất câu trả lời tuyệt vời cho tôi, xin lỗi –

Trả lời

12

Một lý do mọi người tránh thẻ đóng?> Là tránh "tiêu đề đã gửi lỗi" do ngắt dòng hoặc các ký tự ẩn khác sau thẻ?>.

+0

Đây là lý do NetBeans cho FWIW. – pbhj

3

Hoàn toàn hợp lệ để bỏ qua thẻ đóng. Một trong những lý do để làm như vậy là để tránh khoảng trống không mong muốn có thể xung đột với tiêu đề.

1

Được sử dụng để tránh gửi tiêu đề ở các tệp được bao gồm. Ví dụ: nếu tệp được bao gồm của bạn chứa thẻ đóng PHP và bộ đệm không gian trên đó hoặc dòng mới, tệp này sẽ gửi tiêu đề và bạn không thể thay đổi thông tin tiêu đề trong tương lai.

0

Tôi thường sử dụng thẻ đóng, nhưng đã nghe nói về kiểu mã này khi sử dụng Trình đánh mã. Tôi đoán là bằng cách loại bỏ thẻ đóng, bạn tránh các vấn đề có thể xảy ra với các ký tự "khoảng trống" có thể kết thúc các phiên của bạn, điều này có thể gây ra lỗi "tiêu đề đã gửi".

1

Từ hướng dẫn (http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php):

Lưu ý: Các thẻ đóng của một khối PHP ở phần cuối của một tập tin là không bắt buộc, và trong một số trường hợp bỏ qua nó là hữu ích khi sử dụng bao gồm () hoặc yêu cầu(), do đó, khoảng trắng không mong muốn sẽ không xảy ra tại kết thúc tệp và bạn vẫn sẽ có thể thêm tiêu đề vào phản hồi sau đó. Nó cũng hữu ích nếu bạn sử dụng bộ đệm đầu ra , và không muốn để xem khoảng trống không mong muốn được thêm vào tại phần cuối của các phần được tạo bởi các tệp đính kèm .

5

Thực sự không quá nhiều để nói về vấn đề này.

Một file PHP kết thúc như vậy:

<php 
//code 
?> 

sẽ thực sự làm cho PHP gửi tiêu đề cho khách hàng, vì các khoảng trắng nằm sau thẻ đóng ?>, mà bạn có thể thấy nếu bạn đánh dấu khối mã. Khoảng trống hoặc dấu ngắt dòng ở cuối tệp có thể dễ bỏ sót và khó theo dõi.

Khi tiêu đề được gửi đi, không thể thực hiện các công việc như thay đổi dòng trạng thái hoặc loại nội dung.

Vì thẻ đóng được ngụ ý ở cuối tệp, bạn chỉ có thể bỏ qua thẻ đóng cho các tệp chỉ có mã PHP. Nếu bạn làm như vậy, bất kỳ khoảng trắng cuối nào sẽ được coi là khoảng trắng trong mã, không phải khoảng trắng trong nội dung và sẽ bị bỏ qua.

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