Schlagwort-Archiv: PHP UTF8

Optimierung von PHP-Tags

PHP bietet einige Möglichkeiten, die Skriptsprache im Code einzuleiten und zu beenden. Beispiele:

<?php /* long form */ ...?>

<? /* short form */ ?>

<% /* ASP-style */ %>

In den Fokus rücken, möchte ich dabei das End-Tag. Also z.B „?>“. In Dateien, die ausschließlich PHP-Code enthalten, ist dieses nicht nötig. Wo immer auch möglich, sollte man daher auf das schließende PHP-Tag verzichten, denn dieses hat einen gravierenden Nachteil. Stellen wir uns folgenden Code vor:

<?php
  require_once('test.php');
  echo a();

und die dazugehörige test.php:

<?php

  function a() { /* ... */ }

?>...

Die Punkte am Ende der Datei test.php sollen exemplarisch für Leerzeichen stehen. Genau jene können zum Problem werden, wenn die Ausgabe exakt dem Rückgabewert der Funktion a() entsprechen muss. Beispielsweise, wenn diese durch andere Software eingelesen und interpretiert wird. Die Leerzeichen am Ende werden nämlich eins zu eins bereits bei der Ausführung von „require_once(test.php);“ mit ausgegeben und sind somit Teil der Gesamtausgabe des Skripts. Dieses Verhalten nutzt man sogar oftmals bei der Ausgabe von HTML, wenn PHP und HTML gemischt in einer Datei stehen (z.B. in einem Template). Bei Leerzeichen am Ende einer PHP-Datei kann dieses Verhalten jedoch schnell zu einer langwierigen Fehlersuche führen (gerade wenn sich viele Includes durch mehrere Dateien ziehen). Fehlt das PHP End-Tag, erkennt PHP automatisch, dass der Sourcecode am Dateiende abgeschlossen ist. Leerzeichen am Ende sind dann kein Thema mehr. Sie werden bereits vor dem Syntax-Check vom Interpreter entfernt.

Fazit:

Der bewusste Verzicht auf PHP-Ende-Tags ist nützlich und hilft Fehlern vorzubeugen.