Wywoływanie funkcji PHP w łańcuchach HEREDOC

W PHP deklaracje łańcuchowe HEREDOC są naprawdę użyteczne przy wysyłaniu bloku html. Możesz go parsować w zmiennych tylko przez poprzedzanie ich przez $, ale dla bardziej skomplikowanej składni (jak $ var [2] [3]), musisz umieścić swoje wyrażenie w nawiasach {}.

W PHP 5 tojest możliwe, aby wywoływać wywołania funkcji w nawiasach klamrowych {} wewnątrz ciągu HEREDOC, ale musisz przejść trochę pracy. Sama nazwa funkcji musi być przechowywana w zmiennej i trzeba ją nazwać tak, jakby była funkcją o nazwie dynamicznej. Na przykład:

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

Jak widać, jest to trochę bardziej chaotyczne niż tylko:

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

Oprócz pierwszego przykładu kodu istnieją inne sposoby, takie jak wyłamanie się z HEREDOC w celu wywołania funkcji lub cofnięcie problemu i wykonanie czegoś takiego:

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

Ta ostatnia ma tę wadę, że dane wyjściowe są umieszczane bezpośrednio w strumieniu wyjściowym (chyba że używam buforowania wyjścia), co może nie być tym, czego chcę.

Tak więc istotą mojego pytania jest: czy istnieje bardziej elegancki sposób podejścia do tego?

Edytuj na podstawie odpowiedzi: Z pewnością wygląda na to, że jakiś silnik szablonów znacznie ułatwi moje życie, ale wymagałoby ode mnie odwrócenia mojego zwykłego stylu PHP. To nie jest zła rzecz, ale wyjaśnia moją bezwładność. Jestem gotów na znalezienie sposobów na ułatwienie życia, więc szukam teraz szablonów.

questionAnswers(16)

yourAnswerToTheQuestion