2010-08-30 9 views
5

Ich bin nur neugierig. Warum wurde in PHP nicht echo als Funktion implementiert? Warum hat PHP uns nicht einfach printf geben und niemals über echo erzählen? Bitte beachten Sie, dass:Warum wurde in PHP nicht echo als Funktion implementiert? (nicht echo vs. printf)

  • Dies ist keine Frage über echo vs printf.
  • Ich wusste bereits, dass echo ein Sprachkonstrukt ist.

UPDATE: Übrigens wurde printfecho mit umgesetzt?

+1

Warum scheint es, dass die meisten Menschen, die versuchen, dies zu beantworten oder zu sperren, die Frage nicht einmal vollständig gelesen haben? –

+2

* (Quellcode) * [HEAD Revision von formated_print.c] (http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/formatted_print.c?view=markup) – Gordon

Antwort

0

Echo ist ein Sprachkonstrukt. Funktion verwenden Sprachkonstrukt, um ihre Arbeit zu erledigen. Erklären ist nicht gerade meine Spezialität, sondern eine Aktion Google brachte mich zu diesem Thema:

What is the difference between a language construct and a "built-in" function in PHP?

Einige wichtige Inhalte:

...

Dies ist die Wurzel, warum Sie Sprachkonstrukte wie echo oder print können nicht neu definiert werden: Sie sind effektiv in den Parser hartcodiert, während Funktionen einem Satz von Sprachkonstrukten zugeordnet sind und der Parser erlaubt Ihnen, dieses Mapping bei 012 zu ändernKompilieren oder Laufzeit, um Ihre eigenen Sprachkonstrukte oder Ausdrücke zu ersetzen.

...

+0

Danke. Ich habe das schon mal gelesen. Aber ich bin nur neugierig, warum PHP-Team 'Echo', ein Sprachkonstrukt, das ich selten in anderen Programmiersprachen sehe, anstatt es in eine Funktion (IIRC, Python geändert' print', um in Version 3 zu funktionieren) exponiert. –

+2

@Hai Minh Nguyen: Ich denke nicht, dass Rasmus Lerdorf, Zeev Suraski oder Andi Gutmans hier bei SO sind. Ich denke, dass die ersten Entwickler von PHP nur eine befriedigende Antwort auf den Grund für dieses Verhalten geben konnten. (Sie hatten wahrscheinlich eines, aber es ist in den Nebeln der Zeit von uns versteckt, Sterbliche;)) – Piskvor

1

Echo ist keine Funktion und keinen Wert wie Druck zurück. Drucken ist auch ein Sprachkonstrukt - benötigt keine Klammern.

Handbuch: echo - Es wird kein Wert zurückgegeben. Drucken - Gibt immer 1 zurück.

Tatsache bleibt, dass die Rückgabe eines Werts die Systemleistung beeinträchtigt.

Also .. jetzt seit printf ist eine Funktion (die die Länge der ausgegebenen Zeichenfolge zurückgibt) die Antwort, die ich glaube, ist offensichtlich.

+0

Sie können auch verwenden: echo $ var1, $ var2, $ var3; Dies vermeidet eine Verkettung. –

-1

Nur eine wilde Vermutung, aber vielleicht liegt es daran, dass PHP früher als CGI-Binärdateien existierte. Es wäre also einfacher, Shell-Skripte zu portieren, da Sie die Echobinärdatei in diesen Skripten verwenden könnten.