PHP: есть ли причина ставить новую строку в конце файла - PullRequest
27 голосов
/ 29 марта 2012

Когда я фиксирую php-файл в github, я получаю сообщение «Нет новой строки в конце файла».

Это просто предупреждение, и я помню, что по любой причине хорошо иметь новую строкуконец файла.

Но почему?Это пережиток давно ушедших времен, у него все еще есть преимущества или он вообще требуется в php?Если да, то по какой причине?

Ответы [ 4 ]

20 голосов
/ 29 марта 2012

Это не требуется PHP, но может вызвать проблемы с некоторыми инструментами сравнения. Предупреждение - это просто предупреждение, и при желании его можно игнорировать, но я бы порекомендовал следовать соглашению и использовать последний символ как символ новой строки.

8 голосов
/ 04 октября 2017

Это PSR-2 соглашение , которое гласит:

Все PHP-файлы ДОЛЖНЫ заканчиваться одной пустой строкой.

Почему? Поскольку утилиты, которые должны работать с файлами (например, утилита diff ), могут плохо справляться со строками, которые не заканчиваются символом новой строки; Вот как POSIX заявляет в одном из своих правил :

3,206 * Линия

Последовательность из нуля или более не- символов плюс завершающий символ.

Следовательно, строки, не заканчивающиеся символом новой строки, не считаются действительными. Это означает: если ваша последняя строка является строкой кода (а не пустой строкой), эти инструменты могут быть проигнорированы и могут привести к разрыву вашей программы!

5 голосов
/ 29 марта 2012

Предупреждение должно помочь вам обнаружить возможно дефектный усеченный файл, при условии, что файл без символа перевода строки в конце подозревается в том, что он усечен.

Кроме этого, единственная причина, по которой следует избегать исходных файлов без завершающего перевода строки, - избегать предупреждения!

3 голосов
/ 29 марта 2012

Вероятно, он получен из стандарта C: http://c0x.coding -guidelines.com / 5.1.1.2.html (пункт 123). Это связано с тем, что некоторые компиляторы или другие инструменты обработки текста обрабатывают исходный код построчно, поэтому последняя строка исходного кода должна заканчиваться символом новой строки.

Также смотрите это: Предупреждение компилятора «Нет новой строки в конце файла» - include Если файл в конце не указан новой строки, это может привести к таким же проблемам, как в C.

...