在 HEREDOC 字符串中调用 PHP 函数
在 PHP 中,HEREDOC 字符串声明对于输出 html 块非常有用。你可以让它在变量中解析,只需在变量前面加上$前缀,但对于更复杂的语法(如$var[2][3]),你必须把你的表达式放在{}大括号内。
在 PHP 5 中,实际上可以在 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(); ?>
后者的缺点是输出直接放入输出流中(除非我使用输出缓冲),这可能不是我想要的。
所以,我问题的本质是:有没有一种更优雅的方法来解决这个问题?
根据响应进行编辑:当然,看起来某种模板引擎确实会让我的生活更轻松,但这需要我基本上颠倒我通常的PHP风格。并不是说这是一件坏事,但它解释了我的惰性。不过,我正在努力找出让生活更轻松的方法,所以我现在正在研究模板。