我需要将函数的结果插入到heredoc的中间..
$r = func1();
$s = func2();
echo <<<EOT
line1
$r
$s
line3
EOT;
我不确定是否有更好的方法来编写它,因为我需要事先评估所有函数,这会使代码变得愚蠢。
如果有像......那样更好。
echo <<<EOT
line1
{func1()}
{func2()}
line3
EOT;
当然上面的代码不起作用,但只是想表达我的想法......
答案 0 :(得分: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')}";
上面的代码会输出
值
值
你好世界