2010-08-30 17 views
5

Sono solo curioso. In PHP, perché non è stato implementato echo come una funzione? Perché PHP non ci ha dato semplicemente printf e non ci ha mai parlato di echo? Si prega di notare che:In PHP, perché non è stato implementato echo come funzione? (non echo vs. printf)

  • Questa non è una domanda circa echo vs printf.
  • Sapevo già che echo è un costrutto linguistico.

AGGIORNAMENTO: A proposito, è stato implementato printf utilizzando echo?

+1

Perché sembra che la maggior parte delle persone che cercano di rispondere o bloccare questo non ha nemmeno letto completamente la domanda? –

+2

* (codice sorgente) * [Revisione HEAD di formatted_print.c] (http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/formatted_print.c?view=markup) – Gordon

risposta

0

L'eco è un costrutto linguistico. La funzione usa il linguaggio per costruire il proprio lavoro. Spiegando non è esattamente la mia specialità, ma un'azione di google mi ha portato a questo tema:

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

alcuni contenuti importanti:

...

Questa è la radice del perché si non è possibile ridefinire costrutti di linguaggio come echo o print: sono effettivamente codificati nel parser, mentre le funzioni sono mappate su un set di costrutti di linguaggio e il parser consente di modificare tale mappatura su compile- o runtime per sostituire il proprio insieme di costrutti o espressioni del linguaggio.

...

+0

Grazie. L'ho letto prima. Ma sono solo curioso del perché il team di PHP abbia esposto 'echo', un costrutto linguistico che raramente vedo in altri linguaggi di programmazione, invece di inserirlo in una funzione (IIRC, Python ha cambiato' print' per funzionare nella versione 3). –

+2

@Hai Minh Nguyen: Beh, non penso che Rasmus Lerdorf, Zeev Suraski o Andi Gutmans siano qui a SO. Penso che come i creatori iniziali di PHP, solo loro potrebbero dare una risposta soddisfacente alla * ragione * per questo comportamento. (Probabilmente ne avevano uno, ma è nascosto nella notte dei tempi da noi, semplici mortali;)) – Piskvor

1

Echo non è una funzione e non restituisce un valore come la stampa. Anche la stampa è un costrutto linguistico - non richiede una parentesi.

Manuale: echo - Nessun valore restituito. print - Restituisce 1, sempre.

Resta il fatto che restituire un valore riduce le prestazioni del sistema.

Quindi .. ora poiché printf È una funzione (che restituisce la lunghezza della stringa emessa), la risposta credo sia ovvia.

+0

Inoltre puoi usare: echo $ var1, $ var2, $ var3; Questo evita la concatenazione. –

-1

Solo un'ipotesi selvaggia, ma forse è perché PHP esisteva come binari CGI. Quindi sarebbe per rendere più facile il porting degli script di shell, dal momento che si potrebbe usare il binario echo in questi.