W PHP deklaracje ciągów HEREDOC są bardzo przydatne do wyświetlania bloku html. Możesz go przeanalizować w zmiennych, po prostu poprzedzając je przedrostkiem $, ale dla bardziej skomplikowanej składni (np. $ Var [2] [3]), musisz umieścić swoje wyrażenie w nawiasach {}.
W PHP 5, to jest możliwe, aby właściwie wykonywać połączenia funkcjonować w {} szelki wewnątrz łańcucha heredoc, ale trzeba przejść przez trochę pracy. Sama nazwa funkcji musi być przechowywana w zmiennej i należy ją nazywać tak, jakby była funkcją o nazwie dynamicznej. Na przykład:
$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
Jak widać, jest to trochę bardziej bałaganiarskie niż tylko:
$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
Oprócz pierwszego przykładu kodu istnieją inne sposoby, takie jak wyjście z HEREDOC w celu wywołania funkcji lub odwrócenie problemu i wykonanie czegoś takiego:
?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>
Ta ostatnia ma tę wadę, że dane wyjściowe są bezpośrednio umieszczane w strumieniu wyjściowym (chyba że używam buforowania wyjściowego), co może nie być tym, czego chcę.
A więc sedno mojego pytania brzmi: czy istnieje bardziej elegancki sposób podejścia do tego?
Edycja na podstawie odpowiedzi: Z pewnością wydaje się, że jakiś rodzaj silnika szablonów znacznie ułatwiłby mi życie, ale wymagałby ode mnie zasadniczo odwrócenia mojego zwykłego stylu PHP. Nie żeby to było złe, ale wyjaśnia moją bezwładność. Jestem gotów na wymyślanie sposobów na ułatwienie życia, więc teraz zajmuję się szablonami.
Text {$string1} Text {$string2} Text
w heredoc.