在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风格。这并不是什么坏事,但它解释了我的惯性... 我愿意想办法让生活更容易,所以我现在正在研究模板。
Text {$string1} Text {$string2} Text
这样的表达式。 - rinogo