Short Tags must die

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

About the author

IT-Teamleiter bei CHECK24.
Hasst es, Dinge selber zu tun, die auch automatisch gehen.
Will nie wieder Code von Hand formatieren müssen.
Will schon beim Schreiben merken, wenn er Blödsinn macht, nicht erst im Fehlerlog nach dem Deployment.

Comments

  1. Übrigens: Grund dafür, dass Short Tags böse sind ist XML.

    Eine XML-Datei beginnt nämlich mit < ?xml version=1.0"?>. Wer XML mit PHP und Short Tags erzeugt läuft hier auf einen Compilerfehler: „Parse error: syntax error, unexpected ‚version‘ (T_STRING)“.

Schreibe einen Kommentar zu Alexander Reifinger Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen