10 Stimmen

Ist es in PHP möglich, eine Funktion innerhalb einer Variablen zu verwenden?

Ich weiß, in php können Sie Variablen innerhalb von Variablen einbetten, wie:

<? $var1 = "I\'m including {$var2} in this variable.."; ?>

Aber ich habe mich gefragt, wie und ob es möglich ist, eine Funktion in eine Variable zu integrieren. Ich weiß, ich könnte einfach schreiben:

<?php
$var1 = "I\'m including ";
$var1 .= somefunc();
$var1 = " in this variable..";
?>

Aber was ist, wenn ich eine lange Variable für die Ausgabe habe und dies nicht jedes Mal tun möchte, oder wenn ich mehrere Funktionen verwenden möchte?

<?php
$var1 = <<<EOF
    <html lang="en">
        <head>
            <title>AAAHHHHH</title>
            <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        </head>
        <body>
            There is <b>alot</b> of text and html here... but I want some <i>functions</i>!
            -somefunc() doesn't work
            -{somefunc()} doesn't work
            -$somefunc() and {$somefunc()} doesn't work of course because a function needs to be a string
            -more non-working: ${somefunc()}
        </body>
    </html>
EOF;
?>

Oder ich möchte dynamische Änderungen in dieser Menge an Code:

<?
function somefunc($stuff) {
    $output = "my bold text <b>{$stuff}</b>.";
    return $output;
}

$var1 = <<<EOF
    <html lang="en">
        <head>
            <title>AAAHHHHH</title>
            <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        </head>
        <body>
            somefunc("is awesome!") 
            somefunc("is actually not so awesome..") 
            because somefunc("won\'t work due to my problem.")
        </body>
    </html>
EOF;
?>

Und?

25voto

Jason Weathered Punkte 7654

Funktionsaufrufe innerhalb von Strings werden seit PHP5 durch eine Variable unterstützt, die den Namen der aufzurufenden Funktion enthält:

<?
function somefunc($stuff)
{
    $output = "<b>{$stuff}</b>";
    return $output;
}
$somefunc='somefunc';
echo "foo {$somefunc("bar")} baz";
?>

wird die Ausgabe " foo <b>bar</b> baz ".

Ich finde es jedoch einfacher (und das funktioniert in PHP4), um entweder nur die Funktion außerhalb der Zeichenfolge aufrufen:

<?
echo "foo " . somefunc("bar") . " baz";
?>

oder einer temporären Variablen zuweisen:

<?
$bar = somefunc("bar");
echo "foo {$bar} baz";
?>

2voto

Matthias Winkelmann Punkte 14939

"bla bla bla".function("blub")." and on it goes"

-1voto

Tim Kennedy Punkte 5612

Ich möchte das, was Jason W. gesagt hat, noch ein wenig erweitern:

I find it easier however (and this works in PHP4) to either just call the 
function outside of the string:

<?
echo "foo " . somefunc("bar") . " baz";
?>

Sie können diesen Funktionsaufruf auch direkt in Ihre HTML-Datei einbetten, etwa so:

<?

function get\_date() {
    $date = \`date\`;
    return $date;
}

function page\_title() {
    $title = "Today's date is: ". get\_date() ."!";
    echo "$title";
}

function page\_body() {
    $body = "Hello";
    $body = ",  World!";
    $body = "\\n  
\\n";
    $body = "Today is: " . get\_date() . "\\n";
}

?>
<html>
    <head>
    <title><? page\_title(); ?></title>
    </head>
    <body>
    <? page\_body(); ?>
    </body>
</html>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X