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, wenn der PHP-Interpreter 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 Apache-Konfiguration 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!
In Templates können s_o_t schon Sinn machen:
function Welcome ($aData)
{
list ($Anrede , $Name) = $aData;
?>
Sehr geehrter ,
…
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.
<?= “xml version=”1.0? encoding=”UTF-8? ?>
Wozu also die Aufregung?
Der Blog ist böse, er verschluckt die Hälfte des so schön simplen Fixes
Ja, richtig evil
… 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.
Seit PHP Version 5.4.0, die am 1. März 2012 veröffentlicht wurde, sind short_open_tags immer aktiviert – unabhängig von der INI-Einstellung.
Deine Behauptung ist recht mutig, wenn man bedenkt, dass im Changlog folgendes steht:
<?= is now always available regardless of the short_open_tag setting.Ich lese dort nur, dass die Shorthand-Notation immer aktiv ist.