У PHP декларації рядків HEREDOC дійсно корисні для виведення блоку html. Ви можете зробити його синтаксичним аналізом змінних, просто додавши до них префікс $, але для більш складного синтаксису (наприклад, $ var [2] [3]) вам потрібно вставити свій вираз у фігурні дужки {}.
В PHP 5, це можна реально зробити виклики функцій всередині {} дужки всередині рядка Heredoc, але ви повинні пройти трохи роботи. Саме ім'я функції повинно зберігатися у змінній, і ви повинні викликати її так, ніби це функція з динамічним іменем. Наприклад:
$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
Як бачите, це трохи брудніше, ніж просто:
$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
Окрім першого прикладу коду, є й інші способи, наприклад, вирватися з HEREDOC для виклику функції або змінити проблему і зробити щось на зразок:
?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>
Останній має той недолік, що вихід безпосередньо потрапляє у вихідний потік (якщо я не використовую буферизацію виводу), що може бути не тим, що я хочу.
Отже, суть мого запитання: чи є більш елегантний спосіб підійти до цього?
Редагувати на основі відповідей: Звичайно, здається, що якийсь механізм шаблонів значно полегшить моє життя, але це зажадає від мене в основному інвертування мого звичного стилю PHP. Не те, що це погано, але це пояснює мою інерцію .. Хоча я шукаю способи полегшити життя, тому зараз я розглядаю шаблони.
Text {$string1} Text {$string2} Text
гередоку.