2012-12-15 30 views
0

可能重複:
Calling PHP functions within HEREDOC strings在PHP定界符的中間插入函數結果

我需要插入的功能的結果爲定界符的中間..

$r = func1(); 
$s = func2(); 

echo <<<EOT 

line1 
$r 
$s 
line3 
EOT; 

我不確定是否有更好的方法來編寫它,因爲我需要事先評估所有的功能,代碼愚蠢。

更好,如果有這樣的事情..

echo <<<EOT 

line1 
{func1()} 
{func2()} 
line3 
EOT; 

當然,上面的代碼不工作,但只是想表明我的想法......

+0

你的第一個例子是叔他的方式。 {}僅評估變量。 – Lenin

+0

檢查了這一點,回答你的問題:http://stackoverflow.com/questions/104516/calling-php-functions-within-heredoc-strings –

+0

heredoc字符串不是一個模板。我知道如何做到這一點的唯一方法是使用一個濫用'__get()'功能的對象,但更有可能更好地分解部分,預先填充變量。 – Wrikken

回答

1

沒有,有沒有更好的方式來做到它。

Heredoc字符串語法的行爲與雙引號字符串語法非常相似。您不能將函數名稱作爲雙引號字符串中的表達式,而不能超過您可以使用heredoc。所以你在做什麼很好,這就是你應該如何做的。在PHP中,只有在字符串語法內插入插值的時候,如果該值是一個變量。

例如...

$foo = function() { return 'value'; }; 
echo <<<SOMEHEREDOC 
{$foo()} 
SOMEHEREDOC; 
// Is the same as 
echo "{$foo()}"; 
// Is the ssame as 
$foo = 'strtoupper'; 
echo "{$foo('hello world')}"; 

上面的代碼將輸出

HELLO WORLD