2010-07-27 29 views
9

Eventuali duplicati:
why in some scripts they omit the closing php tag ?>Tag di chiusura PHP non necessari?

Come spiegato nel Code Igniter style guide, sembra che PHP tag di chiusura sono opzionali. Diciamo anche che dovresti evitarlo per diverse ragioni.

Chiunque avrebbe ulteriori informazioni su questo problema?

Grazie!

+10

possibile duplicato di [perché in alcuni script si omette il tag di chiusura php?>] (Http://stackoverflow.com/questions/3219383/why-in-some-scripts-the-omit-the-closing-php -tag) - voi ragazzi effettivamente notate che SO suggerisce domande quando entrate nel vostro? Ragazzi [cercate a tutti] (http://stackoverflow.com/search?q=closing+tags+php)? – Gordon

+0

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

+0

Quindi suggerire non è stato proporre grandi risposte a me, mi dispiace –

risposta

12

Una ragione per cui le persone evitano il tag di chiusura?> È evitare "le intestazioni hanno già inviato un errore" a causa di interruzioni di riga o altri caratteri invisibili dopo il tag?>.

+0

Questo è il motivo NetBeans dà FWIW. – pbhj

3

È perfettamente valido per omettere il tag di chiusura. Uno dei motivi per farlo è evitare spazi bianchi indesiderati che potrebbero entrare in conflitto con le intestazioni.

1

Utilizzato per evitare l'invio di intestazioni ai file inclusi. Ad esempio se il file incluso contiene tag di chiusura PHP e caratteri di spazio su di esso o newline questo file invia intestazioni e non è possibile modificare le informazioni di intestazioni in futuro.

0

Di solito uso i tag di chiusura, ma ho sentito parlare di questo stile di codice quando si usa Code Igniter. La mia ipotesi è che, tralasciando il tag di chiusura, si evitino possibili problemi con caratteri "spazi bianchi" che potrebbero finire per interrompere le sessioni, il che può causare un errore "intestazioni già inviate".

1

Dal manuale (http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php):

Nota: Il tag di chiusura di un blocco PHP alla fine di un file è facoltativo, e in alcuni casi omettendo è utile quando si usa includere () o require(), quindi spazio vuoto indesiderato non si verificherà a la fine dei file, e sarà ancora essere in grado di aggiungere le intestazioni alla risposta in seguito. È anche utile se si utilizza il buffering dell'uscita e non si desidera che visualizzi spazi bianchi indesiderati a la fine delle parti generate dai file inclusi .

5

Non c'è davvero molto da dire sul problema.

un file php che termina in questo modo:

<php 
//code 
?> 

sarà effettivamente rendere PHP inviare le intestazioni al client, a causa della spazio bianco dopo il tag di chiusura ?>, che si può vedere se si evidenzia il blocco di codice. Gli spazi bianchi o interruzioni di riga alla fine dei file possono essere facili da perdere e difficili da rintracciare.

Una volta inviate le intestazioni, è impossibile fare cose come cambiare la riga di stato o il tipo di contenuto.

Poiché un tag di chiusura è implicito alla fine di un file, puoi semplicemente omettere il tag di chiusura per i file con solo codice PHP. Se lo fai, qualsiasi spazio bianco finale verrà trattato come spazio bianco nel codice, non in spazio bianco nel contenuto e verrà ignorato.

Problemi correlati