2012-03-29 5 views
22

Quando si esegue il commit di un file php su github, viene visualizzato il messaggio "Nessuna nuova riga alla fine del file".PHP: C'è un motivo per inserire una nuova riga alla fine del file

È solo un avvertimento e ricordo che per qualsiasi motivo è bene avere una nuova riga alla fine di un file.

Ma perché? È un residuo di tempi lontani, ha ancora dei vantaggi o è addirittura richiesto in php? Se sì, per quale motivo?

+0

non ha nulla a che fare con PHP. –

+0

Si tratta di un * warning * o semplicemente di una * dichiarazione * nella visualizzazione diff? – deceze

+0

Solo una dichiarazione credo. È solo quando mi è venuto in mente di nuovo. Pensavo che ci fosse un motivo per farlo in PHP. –

risposta

15

Non è richiesto da PHP, ma può causare problemi con alcuni strumenti diff. L'avvertimento è solo un avvertimento e può essere ignorato se lo si desidera, ma raccomanderei di seguire la convenzione e di avere l'ultimo carattere come una nuova riga.

+0

puoi mostrarmi un esempio per favore .... fissando lo stesso problema. –

5

L'avviso è di aiutare a rilevare un file troncato eventualmente difettoso, supponendo che il file senza una nuova riga alla fine sia sospetto di essere troncato.

Oltre a ciò, l'unico motivo per evitare i file di origine senza terminare una nuova riga è evitare l'avviso!

3

Probabilmente è derivato dallo standard C: http://c0x.coding-guidelines.com/5.1.1.2.html (paragrafo 123). I motivi includono che alcuni compilatori o altri strumenti di elaborazione del testo elaborano il codice sorgente riga per riga, quindi anche l'ultima riga di origine deve terminare con un carattere di nuova riga.

vedere anche questo: "No newline at end of file" compiler warning - include ing un file senza nuova riga alla fine potrebbe causare problemi simili, come in C.

0

Questa è una PSR-2 convention che afferma:

Tutti i file PHP deve finire con una sola riga vuota.

Perché? Perché le utilità che dovrebbero funzionare su file (come lo diff utility) potrebbero non essere all'altezza delle linee che non terminano con una nuova riga; questo è il modo POSIX stati in una delle sue rules:

3,206 Linea

Una sequenza di zero o più caratteri non più un carattere di terminazione .

Pertanto, le righe che non terminano con un carattere di fine riga non sono considerate righe effettive. Il che significa: se l'ultima linea è una linea di codice (anziché una riga vuota), potrebbe essere ignorata da tali strumenti e può causare la rottura del programma!