En PHP, les déclarations de chaînes HEREDOC sont vraiment utiles pour sortir un bloc de html. Vous pouvez le faire analyser dans les variables simplement en les préfixant avec $, mais pour une syntaxe plus compliquée (comme $ var [2] [3]), vous devez mettre votre expression entre {} accolades.
En PHP 5, il est possible de faire des appels de fonction entre {} accolades dans une chaîne HEREDOC, mais vous devez faire un peu de travail. Le nom de la fonction lui-même doit être stocké dans une variable et vous devez l'appeler comme s'il s'agissait d'une fonction nommée dynamiquement. Par exemple:
$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
Comme vous pouvez le voir, c'est un peu plus compliqué que simplement:
$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
Il existe d'autres moyens en plus du premier exemple de code, comme sortir du HEREDOC pour appeler la fonction, ou inverser le problème et faire quelque chose comme:
?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>
Ce dernier a l'inconvénient que la sortie est directement placée dans le flux de sortie (sauf si j'utilise la mise en mémoire tampon de sortie), ce qui n'est peut-être pas ce que je veux.
Donc, l'essence de ma question est: y a-t-il une manière plus élégante d'aborder cela?
Modifier en fonction des réponses: Il semble certainement qu'une sorte de moteur de modèle me simplifierait la vie, mais il me faudrait essentiellement inverser mon style PHP habituel. Ce n'est pas que ce soit une mauvaise chose, mais cela explique mon inertie. Je suis prêt à trouver des moyens de rendre la vie plus facile, alors je cherche des modèles maintenant.
Text {$string1} Text {$string2} Text
dans l'hérédoc.