Aber ist es möglich, die Ergebnisse von Funktionsaufrufen in der Zeichenfolge in doppelten Anführungszeichen zu interpolieren?
Zum Beispiel,
$s = "foo {bar()}";
Sowas in der Art? Es scheint nicht unmöglich zu sein, oder?
ja es ist nicht möglich. Sie können Ihre Antwort einfach durch Ausprobieren erhalten
– Ibu
25. Mai 2012 um 17:03 Uhr
Meinten Sie interpolieren oder Dolmetschen?
– hakre
31. Mai 2012 um 13:09 Uhr
Interpolieren ist hier das richtige Wort.
– Michasaurus
8. Januar 2020 um 2:05 Uhr
Trikotjunge
Es ist absolut möglich, die String-to-Function-Name-Aufruftechnik zu verwenden, wie die Antwort von Overv zeigt. In vielen trivialen Substitutionsfällen liest es sich weitaus besser als die alternativen Syntaxen wie z
Sie brauchen eine Variable, weil der Parser erwartet, dass das $ da ist.
Hier funktioniert die Identitätstransformation gut als syntaktischer Hack. Deklarieren Sie einfach eine Identitätsfunktion und weisen Sie den Namen einer Variablen im Geltungsbereich zu:
function identity($arg){return $arg;}
$interpolate = "identity";
Dann können Sie jeden gültigen PHP-Ausdruck als Funktionsargument übergeben:
Der Vorteil ist, dass Sie a eliminieren können viel von trivialen lokalen Variablen und Echo Aussagen.
Der Nachteil ist, dass die $interpolate-Variable außerhalb des Gültigkeitsbereichs liegt, sodass Sie sie innerhalb von Funktionen und Methoden wiederholt global deklarieren müssten.
Die Funktion für doppelte Anführungszeichen in PHP wertet keinen PHP-Code aus, sondern ersetzt einfach Variablen durch ihre Werte. Wenn Sie PHP-Code tatsächlich dynamisch auswerten möchten (sehr gefährlich), sollten Sie verwenden eval:
eval( "function foo() { bar() }" );
Oder wenn Sie nur eine Funktion erstellen möchten:
$foo = create_function( "", "bar()" );
$foo();
Verwenden Sie dies nur, wenn es wirklich keine andere Möglichkeit gibt.
Wenn sich die Funktion innerhalb einer Klasse befand, können Sie sie innerhalb einer Zeichenfolge referenzieren, z. B.: $s = "foo {$this->bar()}";
– nawfal
9. November 2015 um 10:53 Uhr
@nawfal und die {} sind erforderlich. Andernfalls sucht php nach bar Eigentum.
– Fahmi
26. August 2020 um 15:35 Uhr
Manju
Sofern die Interpolation nicht unbedingt erforderlich ist (bitte kommentieren Sie und lassen Sie mich wissen, warum), verketten Sie die Funktionsausgabe mit der Zeichenfolge.
Ok, aber eigentlich beantwortet das die Frage nicht 😉
– Blackbam
2. Februar 2017 um 22:06 Uhr
Nein, aber es gibt die richtige Lösung für das zugrunde liegende Problem, das darin besteht, eine Zeichenfolge zu erstellen, die sowohl aus Literalteilen als auch aus Ausdrücken besteht.
– Michasaurus
8. Januar 2020 um 2:05 Uhr
14306000cookie-checkPHP-Interpolationszeichenfolge für die Funktionsausgabeyes
ja es ist nicht möglich. Sie können Ihre Antwort einfach durch Ausprobieren erhalten
– Ibu
25. Mai 2012 um 17:03 Uhr
Meinten Sie interpolieren oder Dolmetschen?
– hakre
31. Mai 2012 um 13:09 Uhr
Interpolieren ist hier das richtige Wort.
– Michasaurus
8. Januar 2020 um 2:05 Uhr