Hier sind die Informationen gemäß der offiziellen 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. Während einige Leute kurze Tags und Tags im ASP-Stil als praktisch empfinden, sind sie weniger portabel und werden im Allgemeinen nicht empfohlen .
Nach meiner Erfahrung die meisten Server tun haben kurze Tags aktiviert. Tippen
<?=
ist weitaus bequemer als das Tippen
<?php echo
Die Bequemlichkeit des Programmierers ist ein wichtiger Faktor. Warum werden sie nicht empfohlen?
php
coding-style
php-shorttags
MDCore
quelle
quelle
why
Teil zu beantworten , zitiere ich den Zend PHP 5-Zertifizierungsleitfaden: "Kurze Tags waren zeitweise der Standard in der PHP-Welt; sie haben jedoch den Hauptnachteil, dass sie mit XML-Headern in Konflikt stehen, und haben daher etwas auf der Strecke geblieben. "<?= $example;?>
! Dies ist sehr wichtig, da die Verwendung aller anderen kurzen Tags als zwecklos angesehen wird. Auf jeden Fall wird die Verwendung des kurzen Echo-Tags von nun an empfohlen. Es sorgt für eine glattere und aufgeräumtere Codebasis - insb. in Ansichtsdateien. Also für PHP> = 5.4.0<?= ?>
kann verwendet werden , ohne Einstellungshort_open_tag
. Bitte verwenden Sie nicht die anderen kurzen Tags in Ihrem Code. Die Code-Götter werden sehr wütend, wenn Sie dies tun ...<?
Wird nicht nur in XML für die Eröffnungsdeklaration verwendet<?xml version="1.0" ?>
; Dies ist die allgemeine Syntax für "Verarbeitungsanweisungen", wobei das zweithäufigste Beispiel ist<?xml-stylesheet ... ?>
.<?php
kann tatsächlich als gültige Verarbeitungsanweisung angesehen werden, wie dies möglich ist<?=
(wie in 5.4+ zulässig), aber die Inanspruchnahme des Ganzen führt<?
auch zu unnötigen Konflikten zwischen den Syntaxen.Antworten:
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 gemeinsamen Rechnern tun Unterstützung Short aber „viel“ ist nicht alle von ihnen. Wenn Sie Ihre Skripte freigeben möchten, verwenden Sie am besten die vollständige Syntax.
Ich bin damit einverstanden
<?
und<?=
für Programmierer einfacher 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 einspannen (z. B.:<? php
Oder<? =
)).Ich kaufe Lesbarkeit überhaupt nicht als Grund. Den meisten seriösen Entwicklern steht die Möglichkeit der Syntaxhervorhebung zur Verfügung.
Wie ThiefMaster in den Kommentaren erwähnt, werden ab PHP 5.4
<?= ... ?>
Tags überall unterstützt, unabhängig von den Einstellungen für Shorttags . 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 keine Shorttags garantieren können, müssen Sie diese weiterhin verwenden<?php echo ... ?>
.Außerdem müssen Sie wissen, dass ASP-Tags <%,%>, <% = und Skript-Tags aus PHP 7 entfernt werden . Wenn Sie also langfristigen tragbaren Code unterstützen möchten und zu den modernsten Tools wechseln möchten, sollten Sie diese Teile des Codes ändern.
quelle
Ich bin zu gern
<?=$whatever?>
, um es loszulassen. Hatte nie ein Problem damit. Ich werde warten, bis es mich in den Arsch beißt. In aller Ernsthaftigkeit haben 85% der (meiner) Kunden in den seltenen Fällen, in denen sie ausgeschaltet sind, Zugriff auf php.ini . Die anderen 15% nutzen Mainstream-Hosting-Anbieter, und praktisch alle haben sie aktiviert. Ich liebe sie.quelle
Ab PHP 5.4 ist die Echo-Verknüpfung ein von Short-Tags getrenntes Problem, da die Echo-Verknüpfung immer aktiviert ist. Es ist jetzt eine Tatsache:
Die Echo-Verknüpfung selbst (
<?=
) kann jetzt sicher verwendet werden.quelle
<?php
kann am Anfang aller Klassendateien verwendet werden, und dann haben Sie<?=
für Ihre Ansichten. Win-Win.So the echo shortcut itself (<?=) is safe to use
... solange Sie PHP 5.4 benötigen. Weit verbreitete PHP-Apps (wie WordPress) haben nicht den Luxus, 5.4 zu benötigen, und bieten sogar bis 2011 PHP 4-Unterstützung an - volle 7 Jahre nach der Veröffentlichung von PHP 5. Wenn Sie sich an einem Ort wie Facebook befinden, an dem alle Installationen Ihrer Software direkt vom Unternehmen selbst ausgeführt werden, ist es viel einfacher, 5.4-Support zu benötigen, als wenn Sie an einem Projekt wie WordPress arbeiten.Das Problem bei dieser ganzen Diskussion liegt in der Verwendung von PHP als Vorlagensprache. Niemand argumentiert, dass Tags in Anwendungsquelldateien verwendet werden sollten.
Die einbettbare Syntax von PHP ermöglicht jedoch die Verwendung als leistungsstarke Vorlagensprache, und Vorlagen sollten so einfach und lesbar wie möglich sein. Viele haben es einfacher gefunden, eine viel langsamere Add-On-Template-Engine wie Smarty zu verwenden, aber für Puristen unter uns, die schnelles Rendern und eine reine Codebasis fordern, ist PHP die einzige Möglichkeit, Vorlagen 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, da Sie PHP und XML wahrscheinlich sowieso nicht mischen sollten. und wenn ja, sollten Sie PHP verwenden, um Textzeichenfolgen auszugeben. Sicherheit sollte niemals ein Problem sein, denn wenn Sie vertrauliche Informationen wie Anmeldeinformationen für den Datenbankzugriff in Vorlagendateien einfügen, treten größere Probleme auf!
Was nun die Serverunterstützung betrifft, muss man sich zugegebenermaßen ihrer Zielplattform bewusst sein. Wenn Shared Hosting ein wahrscheinliches Ziel ist, sollten kurze Tags vermieden werden. Für viele professionelle Entwickler (wie mich) erkennt der Client jedoch an (und hängt tatsächlich davon ab), dass wir die Serveranforderungen diktieren werden. Oft bin ich dafür verantwortlich, den Server selbst einzurichten.
Und wir arbeiten NIEMALS mit einem Hosting-Anbieter zusammen, der uns keine absolute Kontrolle über die Serverkonfiguration gibt. In einem solchen Fall könnten wir uns darauf verlassen, dass wir viel mehr Probleme haben, als nur die Unterstützung für kurze Tags zu verlieren. Es passiert einfach nicht.
Also ja - ich stimme zu, dass die Verwendung von kurzen Tags sorgfältig abgewogen werden sollte. Ich bin aber auch der festen Überzeugung, dass dies IMMER eine Option sein sollte und dass ein Entwickler, der sich seiner Umgebung bewusst ist, sich frei fühlen sollte, sie zu verwenden.
quelle
<?
ein kurzes Tag zu verwenden, da dies zu hässlichen Problemumgehungen für XML führt. Trotzdem stimme ich zu, dass es darum geht, Vor- und Nachteile abzuwägen, und dass Sie es mit Sicherheit tun können, wenn Sie wissen, was Sie tun. Dies ist jedoch keine<?
gute Wahl.Kurze Tags kehren zurück, da Zend Framework " PHP als Vorlagensprache " in der Standard-MVC-Konfiguration verwendet . Ich verstehe nicht, worum es in der Debatte geht. Der größte Teil der Software, die Sie während Ihres Lebens produzieren, wird auf einem Server ausgeführt, den Sie oder Ihr Unternehmen kontrollieren werden. Solange Sie sich konsequent halten, sollte es keine Probleme geben.
AKTUALISIEREN
Nach einigem Arbeiten mit Magento , das Langform verwendet. Infolgedessen habe ich auf die Langform umgestellt:
Über
Scheint ein kleiner Arbeitsaufwand zu sein, um die Interoperabilität sicherzustellen.
quelle
Wegen der Verwirrung, die es mit XML-Deklarationen erzeugen kann. Viele Leute stimmen mit Ihnen, though.
Ein weiteres Problem ist der Schmerz, den es verursachen würde, alles mit kurzen Tags zu codieren, um am Ende herauszufinden, dass der endgültige Hosting-Server sie ausgeschaltet hat ...
quelle
<?='<?xml'
) oder mit den Worten "Sie sollten das nicht tun" schließen, aber das lässt die Tatsache, dass dies passieren kann, nicht verschwinden.<?=
mit<? echo
. Viele Texteditoren können dies problemlos für Tausende von Dateien gleichzeitig tun.Es folgt das wunderbare Flussdiagramm desselben:
Quelle: Ähnliche Frage zu Software Engineering Stack Exchange
quelle
<?
in der Frage erwähnten kurzen Tags (obwohl es die gleiche Konfigurationseinstellung vor 5.4 verwendet hat)http://uk3.php.net/manual/en/language.basic-syntax.phpmode.php bietet zahlreiche Ratschläge, darunter:
und
und
quelle
Für den Fall, dass noch jemand darauf achtet ... Ab PHP 5.4.0 ist Alpha 1
<?=
immer verfügbar:http://php.net/releases/NEWS_5_4_0_alpha1.txt
Es sieht also so aus, als wären kurze Tags (a) akzeptabel und (b) hier, um zu bleiben. Vorerst zumindest ...
quelle
<?=
wird ab 5.4Kurze Tags sind in einigen Webservern (gemeinsam genutzte Hosts usw.) nicht standardmäßig aktiviert, sodass die Code-Portabilität zu einem Problem wird, wenn Sie zu einem dieser Tags wechseln müssen.
Die Lesbarkeit kann für einige ein Problem sein. Viele Entwickler stellen möglicherweise fest, dass dies
<?php
als offensichtlicherer Marker für den Beginn eines Codeblocks auffällt als<?
beim Scannen einer Datei, insbesondere wenn Sie an einer Codebasis festhalten, in der HTML und PHP eng miteinander verwoben sind.quelle
<?= $var ?>
ist es viel besser lesbar als<?php echo $var ?>
<?
vs<?php
.Hinweis: Ab PHP 5.4 ist das kurze Tag
<?=
immer verfügbar.quelle
Ich habe diese Seite gelesen, nachdem ich nach Informationen zum Thema gesucht habe, und ich habe das Gefühl, dass ein Hauptproblem nicht erwähnt wurde: Faulheit vs. Konsistenz. Die "echten" Tags für PHP sind <? Php und?>. Warum? Es ist mir eigentlich egal. Warum sollten Sie etwas anderes verwenden wollen, wenn diese eindeutig für PHP sind? <% und%> bedeuten für mich ASP und <script ..... bedeutet Javascript (in den meisten Fällen). Halten Sie sich also für Konsistenz, schnelles Lernen, Portabilität und Einfachheit an den Standard.
Andererseits stimme ich zu, dass kurze Tags in Vorlagen (und NUR in Vorlagen) nützlich erscheinen, aber das Problem ist, dass wir gerade so viel Zeit damit verbracht haben, darüber zu diskutieren, dass es wahrscheinlich sehr lange dauern würde, bis sie tatsächlich verschwendet wurden so viel Zeit, die zusätzlichen drei Zeichen von "php" einzugeben !!
Viele Optionen zu haben ist zwar nett, aber überhaupt nicht logisch und kann Probleme verursachen. Stellen Sie sich vor, jede Programmiersprache erlaubt 4 oder mehr Arten von Tags: Javascript könnte <JS oder <script .... oder <% oder <sein? JS .... wäre das hilfreich? Im Fall von PHP tendiert die Parsing-Reihenfolge dazu, diese Dinge zuzulassen, aber die Sprache ist in vielerlei Hinsicht nicht flexibel: Sie wirft Hinweise oder Fehler auf die geringste Inkonsistenz, dennoch werden häufig kurze Tags verwendet. Und wenn kurze Tags auf einem Server verwendet werden, der sie nicht unterstützt, kann es sehr lange dauern, um herauszufinden, was falsch ist, da in einigen Fällen kein Fehler angegeben wird.
Schließlich glaube ich nicht, dass kurze Tags hier das Problem sind: Es gibt nur zwei logische Typen von PHP-Codeblöcken: 1) regulären PHP-Code, 2) Vorlagenechos. Für erstere glaube ich fest daran, dass nur <? Php und?> Erlaubt werden sollten, um alles konsistent und portabel zu halten. Für letztere ist die Methode <? = $ Var?> Hässlich. Warum muss es so sein? Warum nicht etwas viel logischeres hinzufügen? <? php $ var?> Das würde nichts bewirken (und nur in den entferntesten Möglichkeiten könnte es mit etwas in Konflikt stehen), und das könnte leicht die umständliche <? = Syntax ersetzen. Oder wenn das ein Problem ist, könnten sie stattdessen <? Php = $ var?> Verwenden und sich keine Sorgen über Inkonsistenzen machen.
An dem Punkt, an dem es 4 Optionen für das Öffnen und Schließen von Tags und das zufällige Hinzufügen eines speziellen "Echo" -Tags gibt, kann PHP auch ein "Benutzerdefiniertes Öffnen / Schließen von Tags" -Flag in php.ini oder .htaccess haben. Auf diese Weise können Designer die auswählen, die ihnen am besten gefällt. Aber aus offensichtlichen Gründen ist das übertrieben. Warum also 4+ Optionen zulassen?
quelle
Es ist gut, sie zu verwenden, wenn Sie mit einem MVC-Framework oder CMS arbeiten, das separate Ansichtsdateien hat.
Es ist schnell, weniger Code, nicht verwirrend für die Designer. Stellen Sie einfach sicher, dass Ihre Serverkonfiguration die Verwendung dieser zulässt.
quelle
Eine etwas andere Situation ist die Entwicklung einer CodeIgniter- Anwendung. CodeIgniter scheint die Shorttags zu verwenden, wenn PHP in einer Vorlage / Ansicht verwendet wird, andernfalls werden bei Modellen und Controllern immer die langen Tags verwendet. Es ist keine feste Regel im Framework, aber zum größten Teil folgt das Framework und ein Großteil der Quelle aus anderen Verwendungen dieser Konvention.
Meine zwei Cent? Wenn Sie den Code nie woanders ausführen möchten, verwenden Sie ihn, wenn Sie möchten. Ich würde lieber nicht massiv suchen und ersetzen müssen, wenn mir klar wird, dass es eine blöde Idee war.
quelle
<?
ist in neueren Versionen standardmäßig deaktiviert. Sie können dies wie beschrieben aktivieren. Aktivieren von Short Tags in PHP .quelle
IMHO-Leute, die kurze Tags verwenden, vergessen oft, dem zu entkommen, was sie wiedergeben. Es wäre schön, eine Vorlagen-Engine zu haben, die standardmäßig ausgeblendet wird. Ich glaube, Rob A hat einen schnellen Hack geschrieben, um kurzen Tags in Zend Frameworks-Apps zu entgehen. Wenn Sie kurze Tags mögen, weil dies das Lesen von PHP erleichtert. Dann könnte Smarty eine bessere Option sein?
für mich sieht das besser aus als
quelle
Man muss sich fragen, wozu kurze Tags gut sind.
Schneller zu tippen
MDCore sagte:
Ja, so ist es. Sie müssen 7 Zeichen * X-mal in Ihre Skripte eingeben.
Wenn ein Skript jedoch eine Stunde oder 10 Stunden oder länger zum Entwerfen, Entwickeln und Schreiben benötigt, wie relevant sind die wenigen Sekunden, in denen diese 7 Zeichen für die Dauer des Skripts nicht hier und da eingegeben werden?
Verglichen mit dem Potenzial für einige oder alle Kernskripte, die nicht funktionieren, wenn kurze Tags nicht aktiviert sind oder aktiviert sind, aber ein Update oder jemand, der die INI-Datei- / Serverkonfiguration ändert, funktioniert sie nicht mehr, andere Potenziale.
Der geringe Nutzen, den Sie erzielen, überwiegt nicht annähernd die Schwere der potenziellen Probleme, dh Ihre Website funktioniert nicht oder schlimmer noch, nur Teile davon funktionieren nicht und es sind Kopfschmerzen zu lösen.
Einfacher zu lesen
Dies hängt von der Vertrautheit ab .
Ich habe immer gesehen und benutzt
<?php echo
. Obwohl<?=
es nicht schwer zu lesen ist, ist es mir nicht vertraut und daher nicht einfacher zu lesen .Und mit Front-End / Back-End-Entwickler-Split (wie bei den meisten Unternehmen) wäre ein Front-End-Entwickler, der an diesen Vorlagen arbeitet, vertrauter, wenn er weiß , dass dies
<?=
gleichbedeutend mit "PHP Open Tag and Echo" ist?Ich würde sagen, die meisten würden sich mit dem logischeren wohler fühlen. Das heißt, ein klares PHP Open Tag und dann was passiert "Echo" -
<?php echo
.Risikobewertung
Problem = Die gesamte Site oder die Kernskripte funktionieren nicht.
Das Problempotential ist sehr gering + der Schweregrad des Ergebnisses ist sehr hoch = hohes Risiko
Fazit
Sie sparen hier und da ein paar Sekunden, müssen nicht ein paar Zeichen eingeben, riskieren aber viel dafür und verlieren wahrscheinlich auch die Lesbarkeit.
Front- oder Back - End - Programmierer vertraut mit
<?=
eher zu verstehen<?php echo
, wie sie sind Standard PHP Dinge - Standard<?php
offen Tag und sehr gut bekannt „Echo“.(Selbst Front-End-Codierer sollten "Echo" kennen, oder sie arbeiten einfach nicht an Code, der von einem Framework bereitgestellt wird.)
Während das Gegenteil nicht so wahrscheinlich ist, ist es unwahrscheinlich, dass jemand logisch ableitet, dass das Gleichheitszeichen auf einem PHP-Short-Tag "Echo" ist.
quelle
<?=
gewöhnt ist, liest<?=
leichter als eine Person, die an Lesen<?php echo
gewöhnt ist<?php echo
.<?php
sehen, dass mir der gesamte Code oft vertrauter ist als<?=
- Vertrautheit macht die Dinge einfacher - aber nicht unbedingt besser.<?=
gewöhnt ist, liest<?=
besser als eine Person, die an Lesen<?php echo
gewöhnt ist<?php echo
. Das heißt, wenn wir zwei identische Kopien von Person X haben und diese nur in dem Aspekt ändern, in dem eine zum Lesen<?=
und die andere zum Lesen verwendet wird<?php echo
, kann die erste Kopiex
beim Lesen mit ihrer gewünschten Syntax den Lesbarkeitswert erreichen. wohingegen die zweite Kopiey
beim Lesen seiner gewünschten Syntax einen Lesbarkeitswert erreichen kann , wobeix >= y
.Seien wir ehrlich. PHP ist höllisch hässlich ohne kurze Tags.
Sie können sie in einer
.htaccess
Datei aktivieren, wenn Sie nicht zu Folgendem gelangenphp.ini
:quelle
Um Portabilitätsprobleme zu vermeiden, starten Sie PHP-Tags mit
<?php
und falls Ihre PHP-Datei nur PHP und kein HTML ist, müssen Sie die schließenden Tags nicht verwenden.quelle
Vor diesem Hintergrund sagte dies ein Freund von mir, um alternative standardisierte Tags im Asp-Stil zu unterstützen, wie
<%
eher als<?
, was eine Einstellung in php.ini namens asp_tags ist. Hier ist seine Argumentation:Hört sich gut an, aber ich glaube, keiner von uns kann die Wagen um diese Sache herum kreisen. In der Zwischenzeit würde ich mich voll daran halten
<?php
.quelle
Ich fand es ab PHP 7 erwähnenswert:
<% … %>
sind weg<? … ?>
sind weiterhin verfügbar, wennshort_open_tag
true festgelegt ist. Dies ist die Standardeinstellung.<?=… ?>
sind immer aktiviert, unabhängig von dershort_open_tag
Einstellung.Gute Befreiung von der ersten, da sie andere Sprachen störte.
Es gibt jetzt keinen Grund mehr, die kurzen Drucketiketten zu verwenden, abgesehen von persönlichen Vorlieben.
Wenn Sie Code schreiben, der mit älteren Versionen von PHP 5 kompatibel ist, müssen Sie sich natürlich an die alten Regeln halten. Beachten Sie jedoch, dass alles vor PHP 5.6 nicht mehr unterstützt wird.
Siehe: https://secure.php.net/manual/en/language.basic-syntax.phptags.php
quelle
Wenn Sie sich für XSS interessieren , sollten Sie verwenden
<?= htmlspecialchars(…) ?>
meiste Zeit verwenden, damit ein kurzes Tag keinen großen Unterschied macht.Auch wenn Sie verkürzen
echo htmlspecialchars()
zuh()
ist es immer noch ein Problem, dass Sie daran denken müssen, es fast jedes Mal hinzuzufügen (und der Versuch, zu verfolgen, welche Daten vor dem Escapezeichen liegen, was nicht entkommen, aber harmlos ist, macht Fehler nur wahrscheinlicher).Ich verwende eine Vorlagen-Engine , die standardmäßig sicher ist und
<?php
Tags für mich schreibt .quelle
<?php ?>
sind viel besser zu bedienen, da Entwickler dieser Programmiersprache ihre Kernsprache massiv aktualisiert haben. Sie können den Unterschied zwischen kurzen und langen Tags erkennen.Kurze Tags werden hellrot hervorgehoben, während die längeren dunkler hervorgehoben werden!
Zum Beispiel etwas wiederzugeben:
<?=$variable;?>
ist in Ordnung. Aber bevorzugen Sie die längeren Tags.<?php echo $variable;?>
quelle
Konvertieren
<?
(ohne nachfolgendes Leerzeichen) in<?php
(mit nachfolgendem Leerzeichen):Konvertieren Sie
<?
(mit einem nachgestellten Leerzeichen) in<?php
(unter Beibehalten des nachfolgenden Leerzeichens):quelle
Short Tag sind immer in PHP verfügbar. Sie müssen also nicht die erste Anweisung in Ihrem Skript wiederholen
Beispiel:
Plötzlich müssen Sie für ein einzelnes PHP-Skript verwenden, dann können Sie es verwenden. Beispiel:
quelle
Ab 2019 bin ich mit bestimmten Antworten hier nicht einverstanden. Ich empfehle lange Tags zu verwenden
oder kurze Echo-Tags
Grund: Sie werden vom PSR-1-Grundcodierungsstandard empfohlen
Andere kurze Tags wie
<? /* code goes here */ ?>
werden nicht empfohlen.Die Spezifikation sagt:
quelle
3 Tags sind in PHP verfügbar:
<?php ?>
für das keine konfigurierten Anweisungen erforderlich sind<? ?>
verfügbar ist, wenn die Option short_open_tag in der php.ini aktiviert ist<?=
seit PHP 5.4.0 ist es immer verfügbarvon PHP 7.0.0 werden Asp und Script Tag entfernt
quelle
Nein, und sie werden von PHP 6 auslaufen gelassen. Wenn Sie also die Langlebigkeit des Codes schätzen, verwenden Sie sie oder die
<% ... %>
Tags einfach nicht .quelle