2009-02-10 34 views
11

Warum sollte ich <?php anstelle von <? in meinem PHP-Skript verwenden?<? Php statt <?

+0

Dies ist im Wesentlichen ein Betrüger von http://stackoverflow.com/questions/436688/difference-between-php-echo-sessionid-and-sessionid –

+0

nicht wirklich; Diese Frage bezieht sich auf Shorttags (eine schnelle Möglichkeit, variable Inhalte wiederzugeben), wobei es sich um die verschiedenen Tag-Konventionen handelt. –

+0

Aber die Antworten verursachen, dass dies ein Betrogener ist. –

Antwort

29

Die beiden wichtigsten Gründe für die kurze Starttag zu vermeiden sind

  1. Maximale Portabilität - <?php auf jedem PHP-fähigen Server arbeiten, aber <?
  2. deaktiviert werden, kann es zur Eröffnung der identisch ist XML Präambel - könnte dazu führen, Parsing oder Ausführung Kopfschmerzen
+1

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

+1

Jeder Serveradministrator, der

+3

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. –

3

Beide sind semantisch gleich. <? ist einfach eine Abkürzung für die vollständige Syntax.

+0

funktioniert genauso in JSP – Vinze

+0

Nick. dieser Code, den ich zeigte, war für ASP.NET MVC und war einfach eine Analogie –

+0

Aber es war eine falsche Analogie. PHP bietet ein Utility-Tag wie ASP.Net, aber es ist nickohrn

1

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

+1

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. –

7

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.

5

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.

+0

Warum in aller Welt sollte jemand die Short Tags deaktivieren? –

+0

@ 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

0

Wordpress Coding Standards sagt nur <?php. Sie erklären nicht warum.

Dies könnte eine religiöse Frage sein.

+0

Ich glaube nicht, dass Stack Overflow Kommentare hatte, als ich diese Antwort gab. –

3

ich persönlich <? lieber aus zwei Gründen ausgeschaltet werden

  1. PHP Coding Standards in vielen großen PHP-Projekt empfiehlt es
  2. schaffen Probleme ausgeschaltet werden, wenn Sie XML-Dokumente generieren (xml-Dokumente beginnen mit <?xml version="1.0" encoding="UTF-8" ?>)
  3. (Bonus) <?php ist besser lesbar und gut sichtbar als <?.
+1

# 3 ist ein MISfeature. Ich möchte, dass PHP rauskommt mein verdammter Weg, nicht sich prominent sichtbar –

+0

Ihr Punkt 2 macht Sie zu einem Bozo: http://hsivonen.iki.fi/producing-xml/ – stesch

0

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.

2

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.

1

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.

+0

In der Zukunft werden PHP Short Tags nicht aktiviert und der gesamte Code wird mit der nächsten Hauptversion brechen. –

+0

Ist das wahr? Gibt es eine offizielle Quelle dafür? – sprugman

+0

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