2012-03-29 29 views
22

Khi tôi cam kết tệp php thành github, tôi nhận được thông báo "Không có dòng mới ở cuối tệp".PHP: Có lý do nào để đặt dòng mới ở cuối tệp

Đó chỉ là cảnh báo và tôi nhớ rằng, vì bất kỳ lý do nào, tốt nhất nên có một dòng mới ở cuối tệp.

Nhưng tại sao? Nó là một tàn dư của thời gian dài đi, nó vẫn còn có lợi thế hoặc là nó thậm chí cần thiết trong php? Nếu có, vì lý do gì?

+0

không liên quan gì đến PHP. –

+0

Đây có phải là cảnh báo * hay đơn giản là câu lệnh * trong chế độ xem khác không? – deceze

+0

Chỉ là một tuyên bố tôi đoán. Nó chỉ là khi nó đến với tâm trí của tôi một lần nữa. Tôi nghĩ có một lý do để làm điều đó trong PHP. –

Trả lời

15

Nó không được yêu cầu bởi PHP, nhưng nó có thể gây ra vấn đề với một số công cụ khác. Cảnh báo chỉ là một cảnh báo và có thể bỏ qua nếu muốn, nhưng tôi khuyên bạn nên theo quy ước và có ký tự cuối cùng là một dòng mới.

+0

bạn có thể chỉ cho tôi một ví dụ xin vui lòng .... nhìn chằm chằm vào vấn đề giống nhau. –

5

Cảnh báo là để giúp bạn phát hiện tệp có thể bị lỗi, bị cắt bớt, với giả định rằng tệp không có dòng mới ở cuối là nghi ngờ bị cắt bớt.

Ngoài lý do đó, lý do duy nhất để tránh các tệp nguồn mà không cần chấm dứt dòng mới là tránh cảnh báo!

3

Có thể xuất phát từ tiêu chuẩn C: http://c0x.coding-guidelines.com/5.1.1.2.html (đoạn 123). Các lý do bao gồm một số trình biên dịch hoặc các công cụ xử lý văn bản khác xử lý dòng mã nguồn theo dòng do đó cũng là dòng nguồn cuối cùng phải kết thúc bằng một ký tự dòng mới.

Cũng thấy điều này: "No newline at end of file" compiler warning - include ing một tập tin mà không cần dòng mới ở cuối có thể gây ra vấn đề tương tự như trong C.

0

Đây là một PSR-2 convention cho biết: Thao

file Tất cả PHP phải kết thúc với một dòng trống duy nhất.

Tại sao? Bởi vì các tiện ích được cho là hoạt động trên các tệp (như diff utility) có thể không đối phó tốt với các dòng không kết thúc bằng một dòng mới; đây là cách POSIX tiểu bang ở một trong rules của nó:

3,206 Dòng

Một chuỗi không hoặc nhiều ký tự phi cộng với một nhân vật chấm dứt .

Vì vậy, các dòng không kết thúc bằng ký tự dòng mới không được coi là dòng thực tế. Điều đó có nghĩa là: nếu dòng cuối cùng của bạn là một dòng mã (thay vì dòng trống), nó có thể bị bỏ qua bởi những công cụ đó và có thể khiến chương trình của bạn bị hỏng!

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