
MDCore
Hier sind die Informationen laut offizieller Dokumentation:
Es gibt vier verschiedene Paare von öffnenden und schließenden Tags, die in PHP verwendet werden können. Zwei davon, <?php ?>
und <script language="php"> </script>
, sind immer verfügbar. Die anderen beiden sind kurze Tags und Tags im ASP-Stil und können über die Konfigurationsdatei php.ini ein- und ausgeschaltet werden. Obwohl einige Leute kurze Tags und Tags im ASP-Stil bequem finden, sind sie weniger portabel und generell nicht zu empfehlen.
Nach meiner Erfahrung die meisten Server tun kurze Tags aktiviert haben. Tippen
<?=
ist viel bequemer als das Tippen
<?php echo
Die Bequemlichkeit des Programmierers ist also ein wichtiger Faktor warum sind sie nicht zu empfehlen?

Oli
Sie werden nicht empfohlen, da es sich um eine PITA handelt, wenn Sie Ihren Code jemals auf einen Server verschieben müssen, auf dem er nicht unterstützt wird (und Sie ihn nicht aktivieren können). Wie Sie sagen, viele Shared Hosts tun unterstützen Shorttags, aber “viele” sind nicht alle. Wenn Sie Ihre Skripte teilen möchten, verwenden Sie am besten die vollständige Syntax.
I stimme zu <?
und <?=
sind einfacher für Programmierer als <?php
und <?php echo
aber es ist möglich, ein Massen-Suchen und Ersetzen durchzuführen, solange Sie jedes Mal dasselbe Formular verwenden (und keine Leerzeichen einfügen (z. B.: <? php
oder <? =
)
Ich kaufe Lesbarkeit überhaupt nicht als Grund. Die meisten ernsthaften Entwickler haben die Möglichkeit, die Syntax hervorzuheben.
Wie ThiefMaster in den Kommentaren erwähnt, ab PHP 5.4, <?= ... ?>
Tags werden unabhängig von den Shorttags-Einstellungen überall unterstützt. Dies sollte bedeuten, dass sie sicher in portablem Code verwendet werden können, aber das bedeutet, dass dann eine Abhängigkeit von PHP 5.4+ besteht. Wenn Sie Pre-5.4 unterstützen möchten und Shorttags nicht garantieren können, müssen Sie trotzdem verwenden <?php echo ... ?>
.
Außerdem muss man das wissen ASP-Tags <% , %> , <%= und script-Tag wurden aus PHP 7 entfernt. Wenn Sie also langfristig portablen Code unterstützen und auf die modernsten Tools umsteigen möchten, sollten Sie diese Teile des Codes ändern.
Ich bin zu lieb <?=$whatever?>
es gehen zu lassen. Hatte nie ein Problem damit. Ich werde warten, bis es mich in den Arsch beißt. Im Ernst, 85% (meiner) Kunden haben Zugriff auf die php.ini in der Selten wenn sie ausgeschaltet sind. Die anderen 15 % nutzen Mainstream-Hosting-Anbieter, und praktisch alle haben sie aktiviert. Ich liebe sie.

dukeofgaming
Beginnend mit PHP 5.4 ist die Echo-Verknüpfung ein separates Problem von Short-Tags, da die Echo-Verknüpfung immer aktiviert ist. Jetzt ist es Fakt:
Also die Echo-Verknüpfung selbst (<?=
) kann jetzt sicher verwendet werden.
Das Problem bei dieser ganzen Diskussion liegt in der Verwendung von PHP als Templating-Sprache. Niemand argumentiert, dass Tags in Quelldateien von Anwendungen verwendet werden sollten.
Die einbettbare Syntax von PHP ermöglicht es jedoch, es als leistungsstarke Vorlagensprache zu verwenden, und Vorlagen sollten so einfach und lesbar wie möglich sein. Viele fanden es einfacher, eine viel langsamere Add-on-Template-Engine wie Smarty zu verwenden, aber für die Puristen unter uns, die schnelles Rendern und eine reine Codebasis verlangen, ist PHP die einzige Möglichkeit, Templates zu schreiben.
Das EINZIGE gültige Argument GEGEN die Verwendung von kurzen Tags ist, dass sie nicht auf allen Servern unterstützt werden. Kommentare zu Konflikten mit XML-Dokumenten sind lächerlich, weil Sie wahrscheinlich sowieso nicht PHP und XML mischen sollten; und wenn ja, sollten Sie PHP verwenden, um Textzeichenfolgen auszugeben. Sicherheit sollte nie ein Problem sein, denn wenn Sie vertrauliche Informationen wie Datenbankzugriffsdaten in Vorlagendateien einfügen, haben Sie größere Probleme!
Nun, was die Frage der Serverunterstützung angeht, muss man sich zugegebenermaßen der Zielplattform bewusst sein. Wenn Shared Hosting ein wahrscheinliches Ziel ist, sollten kurze Tags vermieden werden. Aber für viele professionelle Entwickler (wie mich selbst) erkennt der Client an (und hängt tatsächlich davon ab), dass wir die Serveranforderungen diktieren werden. Oft bin ich für die Einrichtung des Servers selbst verantwortlich.
Und wir arbeiten NIEMALS mit einem Hosting-Anbieter zusammen, der uns nicht die absolute Kontrolle über die Serverkonfiguration gibt – in einem solchen Fall könnten wir damit rechnen, dass wir viel mehr Ärger bekommen, als nur den Short-Tag-Support zu verlieren. Es passiert einfach nicht.
Also ja – ich stimme zu, dass die Verwendung von kurzen Tags sorgfältig abgewogen werden sollte. Aber ich bin auch der festen Überzeugung, dass es IMMER eine Option sein sollte und dass ein Entwickler, der sich seiner Umgebung bewusst ist, sich frei fühlen sollte, sie zu verwenden.

Jake McGraw
Kurze Tags kommen dank zurück Zend-Framework drücken die “PHP als Template-Sprache„in ihrer Standard-MVC-Konfiguration. Ich verstehe nicht, worum es in der Debatte geht, die meiste Software, die Sie während Ihres Lebens produzieren werden, wird auf einem Server laufen, den Sie oder Ihr Unternehmen kontrollieren werden. Solange Sie sich konsequent halten, sollte es keine Probleme geben.
AKTUALISIEREN
Nach ziemlich viel Arbeit mit Magento, das die Langform verwendet. Daher bin ich auf die Langform umgestiegen:
<?php and <?php echo
über
<? and <?=
Scheint eine kleine Menge Arbeit zu sein, um die Interoperabilität sicherzustellen.

Vinko Vrsalović
Wegen der Verwirrung, die es mit XML-Deklarationen erzeugen kann. Viele Leute zustimmen mit du aber.
Eine zusätzliche Sorge ist der Schmerz, den es verursachen würde, alles mit kurzen Tags zu codieren, nur um am Ende herauszufinden, dass der endgültige Hosting-Server sie deaktiviert hat …

Stich
Es folgt das wunderbare Flussdiagramm desselben:

Quelle: ähnliche Frage zu Software Engineering Stack Exchange
9936000cookie-checkKönnen kurze PHP-Tags verwendet werden?yes
Zur Beantwortung der
why
Teilweise möchte ich den Zend PHP 5 Certification Guide zitieren: „Kurze Tags waren eine Zeitlang der Standard in der PHP-Welt; sie haben jedoch den großen Nachteil, dass sie mit XML-Headern in Konflikt geraten, und sind daher etwas zurückgefallen am Wegesrand.”– Flauschige
13. April 2011 um 14:40 Uhr
Was ist der Anwendungsfall, in dem dieses Problem auftritt, bedeutet das, dass es für Entwickler mühsam ist, XML mit PHP zu generieren?
– Jon z
6. September 2012 um 11:08 Uhr
Nehmen wir an, Sie haben XML-Dokumente, die Sie veröffentlichen möchten, aber Sie möchten, dass die Dokumente aus irgendeinem Grund php-parsbar sind, also machen Sie .xml für Ihren Browser parsbar. Sie verwenden kurze Tags, damit sie aktiviert sind, und plötzlich wird das XML-Dokument über die XML-Header geparst, wodurch Dinge kaputt gehen. Hat mich verrückt gemacht, als ich versuchte, das vor langer Zeit herauszufinden. Seitdem Shortcodes auf jedem Server, den ich betreibe, deaktiviert wurden und jedes Team, mit dem ich zusammengearbeitet habe, auf Nicht-Shortcodes zurückgreifen musste
– thenetimp
4. Oktober 2012 um 7:51 Uhr
Ab PHP 5.4.0 enthält die short_open_tag-Direktive das kurze echo-Tag nicht mehr
<?= $example;?>
! Dies ist sehr wichtig, da die Verwendung aller anderen kurzen Tags als zwecklos angesehen wird. Auf jeden Fall wird von nun an die Verwendung des kurzen Echo-Tags empfohlen. Es sorgt für eine glattere und aufgeräumtere Code-Basis – insb. in Ansichtsdateien. Damit für PHP >= 5.4.0<?= ?>
kann verwendet werden ohne Einstellungshort_open_tag
. Bitte verwenden Sie die anderen kurzen Tags nicht in Ihrem Code. Die Code-Götter werden sehr wütend, wenn du das tust …– Borislav Sabev
8. April 2013 um 22:27 Uhr
Ich werde dies als kurzen Kommentar hinzufügen, weil es bereits viel zu viele lange Antworten gibt:
<?
ist nicht nur in XML für die Eröffnung verwendet<?xml version="1.0" ?>
Erklärung; es ist die allgemeine Syntax für “Verarbeitungsanweisungen”, das zweithäufigste Beispiel ist<?xml-stylesheet ... ?>
.<?php
kann eigentlich als gültige Verarbeitungsanweisung betrachtet werden, ebenso wie<?=
(wie in 5.4+ erlaubt), aber das Ganze beanspruchen<?
schafft auch unnötige Konflikte zwischen den Syntaxen.– IMSoP
5. August 2013 um 18:46 Uhr