Chamando Funções PHP dentro de Strings HEREDOC

No PHP, as declarações de string HEREDOC são realmente úteis para gerar um bloco de html. Você pode fazer com que ele analise variáveis ​​apenas prefixando-as com $, mas para uma sintaxe mais complicada (como $ var [2] [3]), você deve colocar sua expressão dentro de {} chaves.

No PHP 5,é É possível fazer chamadas de função dentro de {} chaves dentro de uma string HEREDOC, mas você precisa passar por um pouco de trabalho. O nome da função em si tem que ser armazenado em uma variável, e você tem que chamá-lo como se fosse uma função nomeada dinamicamente. Por exemplo:

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

Como você pode ver, isso é um pouco mais confuso do que apenas:

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

Existem outras maneiras além do primeiro exemplo de código, como sair do HEREDOC para chamar a função, ou reverter o problema e fazer algo como:

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

O último tem a desvantagem de que a saída é colocada diretamente no fluxo de saída (a menos que eu esteja usando o buffer de saída), o que pode não ser o que eu quero.

Então, a essência da minha pergunta é: existe uma maneira mais elegante de abordar isso?

Edite com base nas respostas: Certamente parece que algum tipo de motor de template tornaria minha vida muito mais fácil, mas isso me exigiria basicamente inverter meu estilo PHP usual. Não que isso seja uma coisa ruim, mas explica a minha inércia .. Eu estou pronto para descobrir maneiras de tornar a vida mais fácil, então estou procurando modelos agora.

questionAnswers(16)

yourAnswerToTheQuestion