• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

PHP: Auswertung von Funktionen innerhalb von Strings

Metzga

Alkmene
Registriert
19.12.05
Beiträge
32
Hallo zusammen!

Habe grad eine kleine Blockade...
Es ist ja klar, dass PHP innerhalb von Stings Variablen auswerten kann, sofern entsprechend die richtige Anführungszeichen bzw. die komplexe Syntax mit den geschweiften Klammern verwendent wird.

Wie sieht es aber mit Funktionen aus? Würde PHP etwa folgendes richtig interpretieren:
Code:
$string = "Hallo verehrter $mitarbeiter->getName(), wie geht es Ihnen?";
Oder müsste es vielleicht so lauten:
Code:
$string = "Hallo verehrter ${mitarbeiter->getName()}, wie geht es Ihnen?";
Oder komme ich um ein
Code:
$string = "Hallo verehrter".$mitarbeiter->getName().", wie geht es Ihnen?";
nicht herum?

Bitte um Hilfe!

Grüße,
Metzga
 
Hallo,
die erste Version müsste normalerweise funktionieren, die zweite wird wahrswcheinlich einen Fehler produzieren. Ich persönlich würde aber die dritte Version wählen, da ist dann auf alle Fälle alles klar geregelt und man findet sich auch im Quellcode besser zurecht.
 
Neben unendlich vielen Template-Ansätzen macht es sich ganz gut, wenn du die Variable vorher aus dem Objekt holst, dann geht es mit:
Code:
$name = $mitarbeiter->getName();
$string = "Hallo verehrter $name, wie geht es Ihnen?";
 
Du kannst es z.B. auch so schreiben:

Code:
$string = 'Hallo verehrter '.$mitarbeiter->getName().', wie geht es Ihnen?';

So versucht der Parser erst garnicht den String zu verarbeiten. Ist meiner Meinung nach die beste Möglichkeit.
 
duderino schrieb:
So versucht der Parser erst garnicht den String zu verarbeiten. Ist meiner Meinung nach die beste Möglichkeit.
Ohne das es in einen Glaubenskrieg ausartet (zum glück sind hier noch keine eval-Vorschläge aufgetaucht): es ist zwar richtig, das ein $string = 'hier ein String mit $variable'; nicht funktioniert, weil PHP Strings in ' ' nicht parst, aber ich persönlich finde es einfacher in einen Text "hallo $duda, wie gehts Dir so ..." zu schreiben, als es über ein 'hallo '.$member->name.', wie gehts Dir so ..." zu machen. Zumal, ich auch gern am Ende eines Strings ein \n ranghänge, das natürlich auch nicht geparst wird, woraufhin der resultierende HTML-Quelltext nicht mehr so schön aussieht ...
 
duderino schrieb:
Du kannst es z.B. auch so schreiben:

Code:
$string = 'Hallo verehrter '.$mitarbeiter->getName().', wie geht es Ihnen?';
So versucht der Parser erst garnicht den String zu verarbeiten. Ist meiner Meinung nach die beste Möglichkeit.
Wo wir schon beim Programmierstil sind, $string ist kein guter Name für eine Variable ;)
 
kauan schrieb:
Wo wir schon beim Programmierstil sind, $string ist kein guter Name für eine Variable ;)
o contraire mon amis - $string ist sehrwohl ein guter Name für eine Variable, denn mann sollte schon „sprechende Variablennamen“ wählen!
Ebenso sollten Funktionen sinngemnäß benannt sein: getStringFromObj(); ...
 
Sir Q schrieb:
Ohne das es in einen Glaubenskrieg ausartet (zum glück sind hier noch keine eval-Vorschläge aufgetaucht): es ist zwar richtig, das ein $string = 'hier ein String mit $variable'; nicht funktioniert, weil PHP Strings in ' ' nicht parst, aber ich persönlich finde es einfacher in einen Text "hallo $duda, wie gehts Dir so ..." zu schreiben, als es über ein 'hallo '.$member->name.', wie gehts Dir so ..." zu machen. Zumal, ich auch gern am Ende eines Strings ein \n ranghänge, das natürlich auch nicht geparst wird, woraufhin der resultierende HTML-Quelltext nicht mehr so schön aussieht ...
Wie gesagt. Es ist jedem seine Entscheidung. Es ist in beiden Fällen auf keinen Fall falsch. Da ich alle meine Systeme mit einem Template-System entwickle, hab ich aber eh keine "\n" oder sonstwas am Ende meiner Strings. Das artet hier jetzt auf keinen Fall in einen Glaubenskrieg aus 8-)
 
Danke für eure Antworten!

In den Glaubenskrieg werd ich mich mal nicht einmischen ;-)

Grüße,
Metzga
 
Sir Q schrieb:
o contraire mon amis - $string ist sehrwohl ein guter Name für eine Variable, denn mann sollte schon „sprechende Variablennamen“ wählen!
Ebenso sollten Funktionen sinngemnäß benannt sein: getStringFromObj(); ...
$string.. dass es sich um einen String handelt, sieht man bereits an den folgenden Anfuehrungszeichen. Natuerlich sollte man Variablen und Funktionsnamen usw verwenden, die etwas aussagen, aber etwas triviales auszusagen bringt nicht besonders viel. Das ist genauso sinnlos wie $i++ mit /* i um eins erhoehen */ zu kommentieren ;-)

Aber das gehoert eigentlich nicht hierhin, fiel mir nur gerade so ein.
 
Code:
$outp_string = "Hallo verehrter" . $mitarbeiter->getName() . ", wie geht es Ihnen?";
oder
Code:
$m_name=$mitarbeiter->getName();
$outp_string = "Hallo verehrter" . $m_name . ", wie geht es Ihnen?";
sind die elegantesten Lösungsansätze, da die verwendete Syntax optisch optisch den nicht eingebetteten Variablen entspricht und so der Source-Code ein wenig besser lesbar wird.

Viele Grüße


[email protected]