在 PHP 中,HEREDOC 字符串声明对于输出 html 块非常有用。您可以通过在变量前面加上 $来解析它,但是对于更复杂的语法(比如 $var [2][3]) ,您必须将表达式放在{}括号中。
在 PHP5中,是实际上可以在 HEREDOC 字符串中的{}括号内进行函数调用,但是您必须完成一些工作。函数名本身必须存储在一个变量中,而且必须像调用动态命名的函数那样调用它。例如:
$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
正如你所看到的,这比仅仅:
$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
除了第一个代码示例之外,还有其他方法,比如从 HEREDOC 中分离出来调用函数,或者反转问题并执行以下操作:
?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>
后者的缺点是输出直接放入输出流(除非我使用输出缓冲) ,这可能不是我想要的。
因此,我的问题的实质是: 有没有一种更优雅的方式来解决这个问题?
Edit based on responses: It certainly does seem like some kind of template engine would make my life much easier, but it would require me basically invert my usual PHP style. Not that that's a bad thing, but it explains my inertia.. I'm up for figuring out ways to make life easier though, so I'm looking into templates now.