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