В 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. Не то чтобы это плохо, но это объясняет мою инерцию ... Я за то, чтобы придумать способы облегчить жизнь, поэтому сейчас я изучаю шаблоны.
Text {$string1} Text {$string2} Text
heredoc.