Frage zum Umgang mit echo()

Frage zum Umgang mit echo()

am 02.10.2006 23:35:28 von Tobias Wendorff

Hallo,

wie arbeitet ihr mit echo()?

1. echo "blah " . $string;
2. echo "blah $string";
3. echo "blah ", $string;
4. echo 'blah ' . $string;
5. echo 'blah ', $string;

Bislang habe ich nur Methode 1 und 4 verwendet, aber ein paar Leute
sagten mir, 3 und 5 wären besser. 2 sei nicht so optimal.

Wenn man viele Leerzeichen verwendet, könnte das aber doch
ziemlich nervig werden:

echo 'Hallo ', $name, '! Wie geht es dir an diesem ', $tag, "?
\n";

Schöner wäre da schon:

echo "Hallo $name! Wie geht es dir an diesem $tag?
\n";

Viele Grüße
Tobias

Re: Frage zum Umgang mit echo()

am 02.10.2006 23:42:58 von dafox

Tobias Wendorff schrieb:

> 1. echo "blah " . $string;
> 2. echo "blah $string";
> 3. echo "blah ", $string;
> 4. echo 'blah ' . $string;
> 5. echo 'blah ', $string;

> Bislang habe ich nur Methode 1 und 4 verwendet, aber ein paar Leute
> sagten mir, 3 und 5 w�ren besser. 2 sei nicht so optimal.

Besser, soso. Die Methoden sind wohl ein paar Microsekunden schneller in
der Ausführung, weil die Interpolation wegfällt, aber wen juckt das? Die
Ausführungszeit eines echo oder prints wird nicht zu einem
Perfomanceproblem führen, eher andere Operationen.

> Wenn man viele Leerzeichen verwendet, k�nnte das aber doch
> ziemlich nervig werden:

> echo 'Hallo ', $name, '! Wie geht es dir an diesem ', $tag, "?
\n";

> echo "Hallo $name! Wie geht es dir an diesem $tag?
\n";

Ja, was ist dann das Problem? Das erste kann man nicht lesen, das zweite
schon. Da stellt sich mir gar nicht erst die Frage, welches man nehmen
sollte.

Re: Frage zum Umgang mit echo()

am 02.10.2006 23:52:14 von Tobias Wendorff

Thomas 'DaFox' Hamacher wrote:
> Tobias Wendorff schrieb:
>
>> 1. echo "blah " . $string;
>> 2. echo "blah $string";
>> 3. echo "blah ", $string;
>> 4. echo 'blah ' . $string;
>> 5. echo 'blah ', $string;
>
>> Bislang habe ich nur Methode 1 und 4 verwendet, aber ein paar Leute
>> sagten mir, 3 und 5 w?ren besser. 2 sei nicht so optimal.
>
> Besser, soso. Die Methoden sind wohl ein paar Microsekunden schneller
> in der Ausführung, weil die Interpolation wegfällt, aber wen juckt
> das?

Naja mich interessiert es schon. Die Synthax sollte schon stimmen
und ich suche Argumente, sie zu verteidigen.

> Die Ausführungszeit eines echo oder prints wird nicht zu einem
> Perfomanceproblem führen, eher andere Operationen.

Ich habe gerade mal einen Benchmark gemacht. Die Methoden 3 und 5
sind doppelt so schnell, wie die Anführungszeichen.

>> Wenn man viele Leerzeichen verwendet, k?nnte das aber doch
>> ziemlich nervig werden:
>
>> echo 'Hallo ', $name, '! Wie geht es dir an diesem ', $tag,
>> "?
\n";
>
>> echo "Hallo $name! Wie geht es dir an diesem $tag?
\n";
>
> Ja, was ist dann das Problem? Das erste kann man nicht lesen, das
> zweite schon. Da stellt sich mir gar nicht erst die Frage, welches
> man nehmen sollte.

Klar, besser lesbar - aber wie sieht es bei einem längere String
aus? Zur Zeit schreibe ich an einem Programm, welches automatisch
Literaturangaben formatiert. Da muss ich viel mit Kombinationen
basteln.

Re: Frage zum Umgang mit echo()

am 02.10.2006 23:56:57 von Joerg Behrens

Tobias Wendorff schrieb:
> Hallo,
>
> wie arbeitet ihr mit echo()?
>
> 1. echo "blah " . $string;
> 2. echo "blah $string";
> 3. echo "blah ", $string;
> 4. echo 'blah ' . $string;
> 5. echo 'blah ', $string;

Es fehlt 6. echo('blah');. Aber die () sollten den richtigen Funktionen
vorbehalten bleiben. Warum wird echo eigentlich als Sprachkonstrukt
bezeichnet?

> Bislang habe ich nur Methode 1 und 4 verwendet, aber ein paar Leute
> sagten mir, 3 und 5 wären besser. 2 sei nicht so optimal.

Mein Favorit ist die Nr.4

> Wenn man viele Leerzeichen verwendet, könnte das aber doch
> ziemlich nervig werden:
>
> echo 'Hallo ', $name, '! Wie geht es dir an diesem ', $tag, "?
\n";

Es gibt printf() fuer soetwas. Dann ist es morgen auch noch lesbar und
Augenkrebs bekommt auch keiner.

Da echo beliebig viele Parameter aufnimmt und diese wie bei den
'richtigen' Funktionen auch mit , getrennt angegeben werden funktioniert
hier ein ,.

Da aber wo anders Zeichenketten mit dem Punkt verknuepft werden sehe ich
keine Grund warum es bei echo nicht auch so zumachen.

> Schöner wäre da schon:
>
> echo "Hallo $name! Wie geht es dir an diesem $tag?
\n";

Die "" sind zu vermeiden da die meisten HTML ausgeben mit echo() wo dann
die " fuer die Attribute escaped werden muessen, des weiteren muss man
ein Auge haben fuer Sachen wie:
echo "die datei ($file) liegt in c:\temp";


Sofern dein Schwerpunkt bei PHP auf die Erzeugung von HTML Seiten liegt
mache dich mit einer Templateengine vertraut. Dann brauchts am Ende des
Scripts mal ein echo $tmpl->out(); oder der gleichen und die Frage nach
echo '' oder echo "" stellt sich erst garnicht mehr :).

Gruss
Joerg

--
TakeNet GmbH http://www.takenet.de
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025

Re: Frage zum Umgang mit echo()

am 03.10.2006 01:00:43 von dafox

Tobias Wendorff schrieb:
> Thomas 'DaFox' Hamacher wrote:
>> Tobias Wendorff schrieb:

>>> 1. echo "blah " . $string;
>>> 2. echo "blah $string";
>>> 3. echo "blah ", $string;
>>> 4. echo 'blah ' . $string;
>>> 5. echo 'blah ', $string;

>>> Bislang habe ich nur Methode 1 und 4 verwendet, aber ein paar Leute
>>> sagten mir, 3 und 5 w?ren besser. 2 sei nicht so optimal.

>> Besser, soso. Die Methoden sind wohl ein paar Microsekunden schneller
>> in der Ausf�hrung, weil die Interpolation wegf�llt, aber wen juckt
>> das?

> Naja mich interessiert es schon. Die Synthax sollte schon stimmen
> und ich suche Argumente, sie zu verteidigen.

Syntaktisch sind alle 5 Methoden korrekt. Es geht hier lediglich um
deine persönliche Vorliebe und die Ausführungszeit.

>> Die Ausf�hrungszeit eines echo oder prints wird nicht zu einem
>> Perfomanceproblem f�hren, eher andere Operationen.

> Ich habe gerade mal einen Benchmark gemacht. Die Methoden 3 und 5
> sind doppelt so schnell, wie die Anf�hrungszeichen.

Ja, 5 sollte am schnellsten sein. Die Methode 5 ist nach meiner Messung
zirka 3 mal schneller, was konkret heisst:

------------------------------------------------------------ --------
marker ex time perct elapsed
------------------------------------------------------------ --------
Start - 0.00% -
------------------------------------------------------------ --------
mysql_connect(192.168.1.2, portal, xxx) 0.006805 33.52% 0.006805
------------------------------------------------------------ --------
mysql_select_db(portal) 0.002084 10.27% 0.008889
------------------------------------------------------------ --------
mysql_query(SELECT ...) 0.002441 12.03% 0.011330
------------------------------------------------------------ --------
1000 iterations: echo "blubb $i" 0.006224 30.66% 0.017554
------------------------------------------------------------ --------
1000 iterations: echo 'blubb ', $i 0.002606 12.84% 0.020160
------------------------------------------------------------ --------
Stop 0.000139 0.68% 0.020299
------------------------------------------------------------ --------
total 0.020299 100.00%
------------------------------------------------------------ --------

Der Verbindungsaufbau zur Datenbank hat mit 33.52% der Gesamtzeit mehr
Zeit verbraucht, als die 1000 echos. Die 6 Millisekunden kann man
vernachlässigen, was will man da optimieren? Zumal 1000 echos in einem
einzigen Script schon recht ungewöhnlich sind.

>>> Wenn man viele Leerzeichen verwendet, k?nnte das aber doch
>>> ziemlich nervig werden:
>>> echo 'Hallo ', $name, '! Wie geht es dir an diesem ', $tag,
>>> "?
\n";
>>> echo "Hallo $name! Wie geht es dir an diesem $tag?
\n";

>> Ja, was ist dann das Problem? Das erste kann man nicht lesen, das
>> zweite schon. Da stellt sich mir gar nicht erst die Frage, welches
>> man nehmen sollte.

> Klar, besser lesbar - aber wie sieht es bei einem l�ngere String
> aus? Zur Zeit schreibe ich an einem Programm, welches automatisch
> Literaturangaben formatiert. Da muss ich viel mit Kombinationen
> basteln.

Dateioperationen, Datenbankzugriffe, etc werden im Verhältnis sowieso
viel mehr Zeit benötigen als deine echos, daher ist das der falsche Ort
zum optimieren. Ich habe noch keine Anwendung gesehen, die auf Grund
"falscher" echo-Syntax Performance-Probleme hatte.

Viel wichtiger ist, dass die Anwendung wartbar und der Code
übersichtlich bleibt.

Re: Frage zum Umgang mit echo()

am 03.10.2006 02:29:16 von Niels Braczek

Tobias Wendorff schrieb:

> wie arbeitet ihr mit echo()?

Unterschiedlich.
Objektive Unterschiede:

> 1. echo "blah " . $string;

"" =3D> Aufruf Interpolation
=3D> Stringverknüpfung
echo =3D> Ausgabe
3 (virtuelle) Funktionsaufrufe

> 2. echo "blah $string";

"" =3D> Aufruf Interpolation
echo =3D> Ausgabe
2 (virtuelle) Funktionsaufrufe

> 3. echo "blah ", $string;

"" =3D> Aufruf Interpolation
echo =3D> Ausgabe
2 (virtuelle) Funktionsaufrufe

> 4. echo 'blah ' . $string;

=3D> Stringverknüpfung
echo =3D> Ausgabe
2 (virtuelle) Funktionsaufrufe

> 5. echo 'blah ', $string;

echo =3D> Ausgabe
1 (virtueller) Funktionsaufruf

Optimal ist daher (theoretisch) Variante 5.

> Bislang habe ich nur Methode 1 und 4 verwendet, aber ein paar Leute
> sagten mir, 3 und 5 wären besser. 2 sei nicht so optimal.

Variante 2 ist noch wesentlich besser als Variante 1.

> Wenn man viele Leerzeichen verwendet, könnte das aber doch
> ziemlich nervig werden:
>=20
> echo 'Hallo ', $name, '! Wie geht es dir an diesem ', $tag, "?
\n";
>=20
> Schöner wäre da schon:
>=20
> echo "Hallo $name! Wie geht es dir an diesem $tag?
\n";

Das ist der Punkt. Der Unterschied zwischen den einzelnen Varianten
beträgt je nach unterliegendem Betriebssystem 200% bis 1000%, im Kontex=
t
eines Skriptes, das mehr macht als Ausgaben mittels echo, trotzdem
vernachlässigbar, wie Thomas schon ausführte.
Hier hat Lesbarkeit absoluten Vorrang.

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: Frage zum Umgang mit echo()

am 03.10.2006 13:51:59 von Hadanite Marasek

Tobias Wendorff wrote:
> Hallo,
>
> wie arbeitet ihr mit echo()?
>
> 1. echo "blah " . $string;
> 2. echo "blah $string";
> 3. echo "blah ", $string;
> 4. echo 'blah ' . $string;
> 5. echo 'blah ', $string;

Ich verwende (fast) nur 1. 3 muss man nehmen, damit ein evtl.
definiertes __toString() einer Klasse zum tragen kommt, wenn $string in
Wirklichkeit ein $objekt ist.