short_open_tags are evil

Post von realloc | Einsortiert in Code, Meckerecke am 3. März 2007 | 5 Kommentare

Ich will hier keine Diskussion starten, ob short_open_tag on gut oder schlecht ist. Heutzutage ist es keine Seltenheit mehr, XML zu verarbeiten und dafür ist das einfach übel, weil PHP versucht XML-Deklarationen, wie z.B. <?xml version=”1.0″ encoding=”UTF-8″ ?> zu parsen. Ich sehe auch keinen Vorteil darin, nur <? anstelle von <?php zu schreiben. Auch die Variante <?= anstelle von <?php echo trägt – meiner Meinung nach – nicht wirklich zu Lesbarkeit der Quellen bei. Um aber die die Kompatibilität von Programmen, die Short Tags verwenden, zu gewährleisten, haben viele Webhoster diese Einstellung eingeschalten.

Bis zur Version PHP 4.0.0 hätte wahrscheinlich folgendes Konstrukt die Einstellung von short_open_tag wieder abgeschalten:

if (get_cfg_var (‘short_open_tag’) == ’1′) {
    ini_set (‘short_open_tag’, ’0′);
}

Dies funktioniert aber nicht mehr, weil sich in den PHP-Versionen danach die Option nur noch in der php.ini, der Apachekonfiguration oder in der .htaccess setzen läßt. Eine .htaccess kann man aber meist auch dann schreiben, wenn man nur einen angemieteten Webspace hat. Wenn der Hoster AllowOverride Options gesetzt hat, kann man mit folgender Zeile in der .htaccess die Short Tags abschalten:

php_flag short_open_tag off

Have fun!

Möglicherweise interessiert Dich auch...

5 Antworten auf “short_open_tags are evil”

  1. nikosch sagt:

    In Templates können s_o_t schon Sinn machen:

    function Welcome ($aData)
    {
    list ($Anrede , $Name) = $aData;

    ?>
    Sehr geehrter ,

  2. realloc sagt:

    Daran glaube ich nicht. In Templates werden oft spezielle Tags verwendet, um genau dieses Problem zu umgehen. Mal abgesehen von der grundsätzlichen Diskussion “Templates vs. Decorator vs. Composite View”, bringt man sich nach wie vor um die Möglichkeit, XML zu verarbeiten oder Seiten mit Content für mobile Endgeräte zu erzeugen.

  3. dc sagt:

    <?= “xml version=”1.0″ encoding=”UTF-8″ ?>

    Wozu also die Aufregung? :-)

  4. dc sagt:

    Der Blog ist böse, er verschluckt die Hälfte des so schön simplen Fixes :-(

  5. realloc sagt:

    Ja, richtig evil :-D … aber Du versucht auch nur ein Fix für ein simples Beispiel zu geben, das dann vermutlich nur bei Dir läuft. Sobald Du etwas schreibst, was dann von anderen eingesetzt werden soll, wo Du Umgebung keine Short-Tags zulässt, ist es dann Essig damit.

Einen Kommentar schreiben