在 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 风格。并不是说那是一件坏事,但它解释了我的惰性。不过,我正在想办法让生活更轻松,所以我现在正在研究模板。