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