Tom: Platzhalter in Strings

Beitrag lesen

Hello,

Du könntest dir mal in einer Compiler-Hochsprache, die diese Syntax benutzt (also vermutlich C) den erzeugten Assembler-Code anschauen. Dann wirst Du sehen, dass im Anwendungsfall mit

sprintf('Hallo %1$s, meine Name ist %2$s.', $deinName, $meinName);

der getriebene Aufwand schon erheblich höher ist. Das macht einen dann schon nachdenklich, wenn man sich um Sinn und Unsinn in Programmiersprachen überhaupt noch interessiert.

Also vermeiden, wo es möglich ist?

Das kann man mMn nicht pauschal sein. Dazu müsste man wissen, ob Dein Programm noch eine andere Möglichkeit der Parameterzuordnung besitzt.

Diese Variante von sprintf() stellt quasi eine Schnittstelle dar, die in der Hochsprache eingebaut ist. Die Position der Daten wird von der Position in der Ausgabe entkoppelt.

In der OOP treibt man diesen Aufwand i.d.R. ohnenhin (bei echten Stringklassen sowieso), sodass Du kaum noch Gelegenheit zur "Optimierung" hättest und darüber gar nicht mehr nachdenkst.

Was PHP als Interpreter nun wieder daraus macht, steht noch auf einem ganz anderen Blatt.

Ich stehe aber auf dem Standpunkt, dass man aus der nativen Hochsprache (in der die Interpretersprache geschrieben wurde) ausgeliehene oder "durchgereichte" Funktionen in einer Interpretersprache sowieso nicht unbedacht benutzen sollte, da sie die "Sprachmelodie" der Interpretersprache i.d.R. missachten. Es wäre in PHP konsequent, die Fragmente des Ausgabestrings in der Datenhaltung des Scriptes in einem Array zu speichern, und dann dessen Elemente ausgeben zu lassen, selbstverständlich (einzeln oder gesamt) behandelt mit der passenden Kontextmethode!

Hier fehlt aber sicherlich auch noch ein "printarray()" oder "toString()" für Arrays in PHP.

Arrays konsequent anzuwenden ergibt dann freilich in der Maschinencodeebene normalerweise noch mehr Overhead. Aber dann dient dieser zumindest in der Sprachebene des Projektes der glasklaren Sprachreinheit.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de