PHP, bir değişkenin içinde bir işlevi kullanmak mümkündür

3 Cevap php

Ben php değişkenler içinde değişkenleri embed biliyorum, gibi:

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

But I was wondering how, and if it was possible to include a function inside a variable. I know I could just write:

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

Ama ne çıkış için uzun bir değişken var, ve ben her zaman, ya da ben çoklu fonksiyonları kullanmak istediğinizi yapmak istemiyorsanız:

<?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;
?>

Yoksa bu kod yükü dinamik değişiklikleri istiyorum:

<?
    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;
?>

Peki?

3 Cevap

Dizeleri içinde işlev çağrıları aramak için işlevin adını içeren bir değişken alarak PHP5'ta beri desteklenmektedir:

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

çıktısı "foo <b>bar</b> baz".

Ben kolay ancak onu bulmak (ve bu PHP4 çalışıyor) sadece dize dışında işlevini çağırmak ya:

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

veya geçici bir değişken atamak:

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

"Bla bla bla". Fonksiyonu ("blub"). "Ve bunun üzerine gidiyor"

Jason W söylediklerini biraz genişletilmesi:

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";
?>

Ayrıca sadece sizin gibi, html, doğrudan bu işlev çağrısı gömebilirsiniz:

<?

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>