• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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
 

Mr. Anderson

Gast
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.
 

Sir Q

Rheinischer Winterrambour
Registriert
12.04.05
Beiträge
923
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?";
 

duderino

Prinzenapfel
Registriert
26.01.06
Beiträge
555
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.
 

Sir Q

Rheinischer Winterrambour
Registriert
12.04.05
Beiträge
923
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 ...
 

kauan

Stina Lohmann
Registriert
31.12.05
Beiträge
1.043
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 ;)
 

Sir Q

Rheinischer Winterrambour
Registriert
12.04.05
Beiträge
923
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(); ...
 

duderino

Prinzenapfel
Registriert
26.01.06
Beiträge
555
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 :cool:
 

Metzga

Alkmene
Registriert
19.12.05
Beiträge
32
Danke für eure Antworten!

In den Glaubenskrieg werd ich mich mal nicht einmischen ;)

Grüße,
Metzga
 

kauan

Stina Lohmann
Registriert
31.12.05
Beiträge
1.043
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.
 

Bananenbieger

Golden Noble
Registriert
14.08.05
Beiträge
25.515
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]