Вызов функций PHP в строках HEREDOC

В PHP строковые объявления HEREDOC действительно полезны для вывода блока html. Вы можете анализировать переменные, просто ставя перед ними префикс $, но для более сложного синтаксиса (например, $ var [2] [3]) вы должны поместить свое выражение в фигурные скобки {}.

В PHP 5 этоis можно на самом деле делать вызовы функций в фигурных скобках {} внутри строки HEREDOC, но вам придется проделать небольшую работу. Само имя функции должно храниться в переменной, и вы должны вызывать его, как если бы это была функция с динамическим именем. Например:

<code>$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
</code>

Как видите, это немного более грязно, чем просто:

<code>$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
</code>

Есть и другие способы, кроме первого примера кода, такие как выход из HEREDOC для вызова функции или решение проблемы и выполнение чего-то вроде:

<code>?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>
</code>

Последний имеет тот недостаток, что вывод непосредственно помещается в выходной поток (если я не использую буферизацию вывода), что может быть не тем, что я хочу.

Итак, суть моего вопроса такова: есть ли более элегантный подход к этому?

Edit based on responses: Конечно, кажется, что какой-то движок шаблонов сделает мою жизнь намного проще, но это потребует от меня инверсии моего обычного стиля PHP. Не то, чтобы это было плохо, но это объясняет мою инерцию. Хотя я и собираюсь найти способы облегчить жизнь, поэтому сейчас я ищу шаблоны.

Ответы на вопрос(16)

Ваш ответ на вопрос