Einige von Euch haben vielleicht die Aufregung über PHP8 und Short Tags schon mitbekommen (z.B. auf Der Seite mit dem Gezwitscher).
Worum geht es?
<? if($foo) ?> vs. <?php if($foo) ?>
Die kurze Variante ist inzwischen standardmäßig in der Config disabled und seit Jahren schon böseböse. Das Feature soll nun mit PHP 7.4 deprecated werden und in PHP 8 komplett ausgebaut.
RFC ist hier: https://wiki.php.net/rfc/deprecate_php_short_tags
Warum sollte mich das interessieren?
Klingt erst mal nach *schulterzuck* – betrifft mich nicht. Merk ich ja, wenn es nicht mehr geht. Nutzen wir sowieso nicht.
Das Dumme ist: Es wird dann (Stand heute – kann sich noch ändern) kein Fehler geworfen, PHP interpretiert Short Tags einfach nicht mehr. Das bedeutet, der Code landet einfach so im Output.
Und: Nutzen wir sowieso nicht – dachte ich auch. Bis ich heute über einen PR gestolpert bin, in dem ich in einem Steinalt-Template doch noch Short Tags gefunden habe.
NICHT betroffen ist übrigens das Short Echo Tag <?= $foo ?>
– das kann weiterhin verwendet werden!
Lösung
- Search & Replace von “<? ” nach “<?php “
- Diverse Code-Fixer
Übrigens: Grund dafür, dass Short Tags böse sind ist XML.
Eine XML-Datei beginnt nämlich mit . Wer XML mit PHP und Short Tags erzeugt läuft hier auf einen Compilerfehler: “Parse error: syntax error, unexpected ‘version’ (T_STRING)”.