1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

PHP: Auswertung von Funktionen innerhalb von Strings

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Metzga, 30.01.06.

  1. Metzga

    Metzga Alkmene

    Dabei seit:
    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
     
  2. 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.
     
  3. Sir Q

    Sir Q Rheinischer Winterrambour

    Dabei seit:
    12.04.05
    Beiträge:
    921
    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?"; 
     
  4. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    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.
     
  5. Sir Q

    Sir Q Rheinischer Winterrambour

    Dabei seit:
    12.04.05
    Beiträge:
    921
    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 ...
     
  6. kauan

    kauan Stina Lohmann

    Dabei seit:
    31.12.05
    Beiträge:
    1.043
    Wo wir schon beim Programmierstil sind, $string ist kein guter Name für eine Variable ;)
     
  7. Sir Q

    Sir Q Rheinischer Winterrambour

    Dabei seit:
    12.04.05
    Beiträge:
    921
    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(); ...
     
  8. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    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:
     
  9. Metzga

    Metzga Alkmene

    Dabei seit:
    19.12.05
    Beiträge:
    32
    Danke für eure Antworten!

    In den Glaubenskrieg werd ich mich mal nicht einmischen ;)

    Grüße,
    Metzga
     
  10. kauan

    kauan Stina Lohmann

    Dabei seit:
    31.12.05
    Beiträge:
    1.043
    $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.
     
  11. Bananenbieger

    Bananenbieger Golden Noble

    Dabei seit:
    14.08.05
    Beiträge:
    24.564
    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


    sp@php.net
     

Diese Seite empfehlen