Warum sollte ich <?php
anstelle von <?
in meinem PHP-Skript verwenden?<? Php statt <?
Antwort
Die beiden wichtigsten Gründe für die kurze Starttag zu vermeiden sind
- Maximale Portabilität -
<?php
auf jedem PHP-fähigen Server arbeiten, aber<?
- deaktiviert werden, kann es zur Eröffnung der identisch ist XML Präambel - könnte dazu führen, Parsing oder Ausführung Kopfschmerzen
Das XML-Argument zählt nicht. (http: //hsivonen.iki. fi/producing-xml /) .Das XML-Argument gehört zur selben Kategorie wie die Entscheidung für eine nicht-standardmäßige Möglichkeit, SQL-Strings zu umgehen.Das PHP-Team hat einen großen Fehler gemacht und versehentlich diese Kurz-Tag-Funktion gelöscht. – stesch
Jeder Serveradministrator, der sollte erschossen werden. –
Jasper, bitte befürworte nicht das Schießen von Menschen, außer du bist bereit, das Ziel in die Augen zu sehen und selbst den Abzug zu betätigen. –
Beide sind semantisch gleich. <?
ist einfach eine Abkürzung für die vollständige Syntax.
funktioniert genauso in JSP – Vinze
Nick. dieser Code, den ich zeigte, war für ASP.NET MVC und war einfach eine Analogie –
Aber es war eine falsche Analogie. PHP bietet ein Utility-Tag wie ASP.Net, aber es ist = Wie in meinem vorherigen Kommentar angegeben. Du hast deine Antwort korrigiert, also habe ich dich gebeten. – nickohrn
Es sollte beachtet werden, dass einige Serverkonfigurationen von PHP das eine oder andere out-of-the-box nicht unterstützen. Zum Beispiel unterstützt mein Webserver < nicht? unterstützt jedoch <? php
Das ist technisch inkorrekt - ALLE php-Installationen unterstützen das normale (lang) öffnende Tag, während das kurz öffnende Tag kann deaktiviert sein. Zu sagen "manche unterstützen den einen oder anderen nicht" ist sachlich inkorrekt. –
Es gibt zwei Methoden PHP zu starten
<?php
und
<?
PHP enthält auch
<?=
Aber das wird die Variable auszudrucken hinter es, da es eine Abkürzung für Echo ist.
Sie sollten <? Php verwenden, da es mit allen Servertypen kompatibel ist. Sie können Ihren Code in eine neue Hosting-Lösung verschieben oder einen neuen Server-Standard einrichten, und die Shorthands können deaktiviert werden.
Die Kurznamen <?
(und <?=
) können deaktiviert werden. Die lange Version <?php
(und <?=
= <?php echo
) funktioniert überall.
Wir könnten den Sinn dieser Entscheidung des PHP-Teams diskutieren, um so etwas konfigurierbar zu machen, aber das Wesentliche ist, dass Sie die kurzen Tags nicht in tragbarem Code verwenden können.
Warum in aller Welt sollte jemand die Short Tags deaktivieren? –
@ Orion Edwards: Es ist eine Konfigurationsoption. php.ini macht es wirklich schwer, portablen Code zu schreiben. Schwieriger als nötig. Wenn es eine Option ist, dann ist es für portablen Code ein Tabu. :-( – stesch
Wordpress Coding Standards sagt nur <?php
. Sie erklären nicht warum.
Dies könnte eine religiöse Frage sein.
Php macht Code portabler, deshalb empfehlen WordPress Coding Standards es. – nickohrn
Ich glaube nicht, dass Stack Overflow Kommentare hatte, als ich diese Antwort gab. –
ich persönlich <?
lieber aus zwei Gründen ausgeschaltet werden
- PHP Coding Standards in vielen großen PHP-Projekt empfiehlt es
- schaffen Probleme ausgeschaltet werden, wenn Sie XML-Dokumente generieren (xml-Dokumente beginnen mit
<?xml version="1.0" encoding="UTF-8" ?>
) - (Bonus)
<?php
ist besser lesbar und gut sichtbar als<?
.
# 3 ist ein MISfeature. Ich möchte, dass PHP rauskommt mein verdammter Weg, nicht sich prominent sichtbar –
Ihr Punkt 2 macht Sie zu einem Bozo: http://hsivonen.iki.fi/producing-xml/ – stesch
die Unterstützung der kurzen Form <?
/<?=
Syntax basiert auf der short_open_tag
parameter in php.ini. Wenn Sie Ihre eigene Codebase hosten, ist dies einfach zu aktivieren.Auf einem gemeinsam genutzten/verwalteten Webhost haben Sie jedoch möglicherweise keine Kontrolle über diese Einstellung.
Daher sollten Sie für maximale Portabilität die lange Form Syntax verwenden.
Um alle Erklärungen hinzuzufügen, dass kurze Tags nicht verwendet werden sollten, weil sie möglicherweise deaktiviert sind (oder vielleicht sogar aus zukünftigen PHP-Versionen entfernt wurden), ist die Hauptursache für abgekündigte Short Tags, dass sie keine gültige XML- "Verarbeitung" sind Anweisungen "während die <?php
Tags sind. So können PHP-Vorlagen mit <?php ... ?>
Tags gültige XML-Dokumente sein, während solche mit den kurzen Tags keine sind.
Die Portabilität Argumente sind schön und gut, aber ich werde sein Sakrileg und sagen, dass Sie voran gehen sollten und Kurz-Tags verwenden, wenn Sie wollen, es sei denn, du bist etwas tun, das für eine wirklich weite Verbreitung (der Quelle) gedacht ist, oder etwas sehr xml-fokussiert machen.
a) Ich war noch nie in einer Situation, in der ich keine Kurznamen aktivieren konnte. Normalerweise sind sie standardmäßig aktiviert.
b) In den meisten Situationen wird die <?
nicht mit <?xml
verwechselt, weil sie auf verschiedenen Ebenen des Stapels geparst werden.
c) Das Short-Tag ist weniger aufdringlich und damit weniger Code. Das finde ich besonders zutreffend mit <?php echo
vs. <?=
. (Sie könnten argumentieren, dass Sie im Allgemeinen vermeiden sollten, einen der beiden zu verwenden, weil es wahrscheinlich bedeutet, dass Sie Spaghetti-Code schreiben, aber komm schon - das ist php!)
Natürlich hängt alles davon ab, welche Art von Projekt, an dem du arbeitest, aber für eine einfache Website glaube ich nicht, dass dir das kurze Etikett überhaupt wehtun könnte.
In der Zukunft werden PHP Short Tags nicht aktiviert und der gesamte Code wird mit der nächsten Hauptversion brechen. –
Ist das wahr? Gibt es eine offizielle Quelle dafür? – sprugman
Auf php.net sehe ich eine Empfehlung, lange Tags zu verwenden, was in Ordnung ist, aber ich sehe nichts offizielles über das Weggehen von kurzen Tags. – sprugman
- 1. Warum 1 << 4 statt 16?
- 2. Php was bedeutet <<<?
- 3. PHP: <<< vs ob_start
- 4. Was bedeutet in PHP "<<<"?
- 5. Warum Ausgabe von cout << setprecision (2) << 0.999 ist 1 statt 1.0?
- 6. PHP-Array zu jQuery-Array innerhalb <<< EOT
- 7. Dokumentation auf PHP-Funktion <<< OUT
- 8. NGINX ändern <? Php zu <?
- 9. XML-Dokument erstellen, die (statt ‚<test></test>‚‘<test />‘) mit Schrägstrich
- 10. „<<<<<<“ Symbol im Quellcode
- 11. Schreiben Prototypen statt # include <stdio.h>
- 12. Unexpected '<' in PHP
- 13. PHP Syntaxfehler: unerwartet '<'
- 14. THREE.Camera.prototype.lookAt</ <() - Was bedeutet</ <?
- 15. Unterschied zwischen <?php ?> und <script language = "php"></script>
- 16. Git fügt <<<<<<< HEAD zu Datei
- 17. php.ini: was muss ich ändern, schreiben <? stattdessen <? php?
- 18. Regex - Wählen Sie "<?" aber nicht „<? php“
- 19. Was ist der Unterschied in <? und <? php
- 20. <? oder <? php --- Gibt es einen Unterschied?
- 21. <body <? Php body_class(); ? >> als Funktion?
- 22. PHP-Projekt - mit <script>/</script>
- 23. Wie 0x01010101 entspricht 1 << 24 + 1 << 16 + 1 << 8 + 1
- 24. Richtig Betreiber überlasten << in Boost.Log
- 25. Was bedeutet '<? =' In PHP?
- 26. Syntaxfehler PHP Syntaxanalyse unerwarteter '<'
- 27. PHP <? Tags auf WAMP
- 28. php: // Eingabe <> $ _POST?
- 29. Tortoise svn <<<< zu Dateien hinzufügen!
- 30. Redirector "<<<" in Ubuntu?
Dies ist im Wesentlichen ein Betrüger von http://stackoverflow.com/questions/436688/difference-between-php-echo-sessionid-and-sessionid –
nicht wirklich; Diese Frage bezieht sich auf Shorttags (eine schnelle Möglichkeit, variable Inhalte wiederzugeben), wobei es sich um die verschiedenen Tag-Konventionen handelt. –
Aber die Antworten verursachen, dass dies ein Betrogener ist. –