2010-07-27 14 views
9

Mögliche Duplizieren:
why in some scripts they omit the closing php tag ?>PHP schließendes Tag unnötig?

Wie in der Code Igniter style guide, scheint es, dass PHP schließenden Tags sind optional. Es heißt sogar, Sie sollten es aus mehreren Gründen vermeiden.

Jeder hätte mehr Informationen zu diesem Thema?

Dank!

+10

mögliche Duplikate von [warum in einigen Skripten sie das Schließen von PHP-Tags auslassen?>] (Http://StackOverflow.com/questions/3219383/Why-in-Some-Scripts-they-omit-the-Closing-PHP -Tag) - merkst du wirklich SO schlägt Fragen vor, wenn du deine einreichst? Habt ihr [überhaupt] (http://stackoverflow.com/search?q=closing+tags+php)? – Gordon

+0

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

+0

SO vorschlagen, schlug keine großen Antworten auf mich, tut mir leid –

Antwort

12

Ein Grund, warum Menschen die Schließung vermeiden?> Tag vermeiden "die Header bereits Fehler gesendet" aufgrund von Zeilenumbrüchen oder andere unsichtbare Zeichen nach dem?> Tag.

+0

Dies ist der Grund NetBeans gibt FWIW. – pbhj

3

Es ist absolut zulässig, das schließende Tag wegzulassen. Einer der Gründe, dies zu tun, besteht darin, unerwünschte Leerräume zu vermeiden, die Konflikte mit Kopfzeilen verursachen könnten.

1

Es wurde vermieden, Header bei enthaltenen Dateien zu senden. Wenn Ihre eingeschlossene Datei zum Beispiel PHP enthält, das Tag und Leerzeichen an sie schließt, oder Zeilenumbruch, sendet diese Datei Header und Sie können die Header-Informationen in Zukunft nicht ändern.

0

Normalerweise verwende ich die schließenden Tags, aber habe über diesen Code-Stil gehört, wenn Sie Code Igniter verwenden. Meine Vermutung ist, dass Sie, indem Sie das schließende Tag weglassen, mögliche Probleme mit "Leerzeichen" -Zeichen vermeiden, die Ihre Sitzungen brechen könnten, was den Fehler "Header bereits gesendet" verursachen kann.

1

Aus dem Handbuch (http://www.php.net/manual/en/language.basic-syntax.instruction-separation.php):

Hinweis: Der End-Tag eines PHP-Blockes am Ende einer Datei ist optional und in einigen Fällen weggelassen ist es hilfreich wenn gehört die Verwendung von () oder require(), so unerwünschte Leerzeichen nicht bei das Ende der Dateien auftreten, und Sie werden immer noch in der Lage sein, Header zur Antwort später hinzuzufügen. Es ist auch praktisch, wenn Sie Ausgabepufferung verwenden, und nicht möchten, dass hinzugefügt unerwünschte Leerzeichen bei das Ende der Teile, die von den enthaltenen Dateien generiert werden.

5

Es gibt wirklich nicht viel zu sagen über das Problem.

Eine PHP-Datei wie so endet:

<php 
//code 
?> 

tatsächlich PHP senden Header an den Client machen, wegen der Leerzeichen nach dem Schließen ?>-Tag, das Sie sehen können, wenn Sie den Code-Block markieren. Leerzeichen oder Zeilenumbrüche am Ende von Dateien können leicht zu übersehen und schwer zu finden sein.

Sobald die Header gesendet werden, ist es unmöglich, Dinge wie die Statuszeile oder den Inhaltstyp zu ändern.

Da ein schließendes Tag am Ende einer Datei steht, können Sie einfach das schließende Tag für Dateien mit nur PHP-Code weglassen. Wenn Sie dies tun, werden alle nachfolgenden Leerzeichen als Leerzeichen im Code und nicht als Leerzeichen im Inhalt behandelt und werden ignoriert.

Verwandte Themen