phpbar.de logo

Mailinglisten-Archive

[php] "?>"

[php] "?>"

Sascha Meyer harlequin2 at gmx.de
Son Feb 1 10:25:39 CET 2009


Hallo Rene,

Rene Thiel schrieb:
> Guten Morgen,
>
> ich bin etwas verwirrt:
> im aktuellen Joomla finde ich mehrere PHP-Dateien, bei denen das schließende "?>" am Ende fehlt.
> Ist es neuerdings üblich, das schließende "?>" wegzulassen?
>   
Das letzte schließende PHP-Tag einer Seite kann weggelassen werden 
(siehe: http://de2.php.net/basic-syntax.instruction-separation), ich 
würde es aber aus mehreren Gründen nicht machen:
1.) Wird eine Datei mit fehlendem schließenden Tag per include() oder 
require() eingebunden, kann es zu einem Parser-Fehler kommen, da die 
eingebettete Datei erst in den Context des aufrufenden Scripts geladen 
und anschließend interpretiert; das fehlende Tag erzeugt dadurch 
fehlerhaften Folgecode.
2.) Man sollte einfach des guten Codings wegen jedes Tag schließen, das 
man geöffnet hat, damit der Code "sauberer" bleibt.

In Deinem beschriebenen Fall ist übrigens jedes Leerzeichen und jeder 
Zeilenumbruch hinter dem "?>" eine direkte Ausgabe an den Browser, 
weshalb "headers already sent" gemeldet wird. Als Workaround könntest Du 
per ob_start() oder php.ini-Direktive die Ausgabepufferung aktivieren, 
dabei werden header-Anweisungen beim Skriptende bzw. beim Aufruf von 
ob_flush() zuerst gesendet, gefolgt von den eigentlichen Nutzdaten.

Viele Grüße und einen schönen Sonntag,

Sascha

php::bar PHP Wiki   -   Listenarchive