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