Dalam PHP, deklarasi string HEREDOC sangat berguna untuk mengeluarkan blok html. Anda bisa membuatnya mengurai dalam variabel hanya dengan memberi awalan $, tetapi untuk sintaks yang lebih rumit (seperti $ var [2] [3]), Anda harus meletakkan ekspresi Anda di dalam {} tanda kurung.
Dalam PHP 5, itu adalah mungkin untuk benar-benar membuat panggilan fungsi dalam {} kurung di dalam string heredoc, tetapi Anda harus melalui sedikit pekerjaan. Nama fungsi itu sendiri harus disimpan dalam variabel, dan Anda harus memanggilnya seperti fungsi yang dinamai secara dinamis. Sebagai contoh:
$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
Seperti yang Anda lihat, ini sedikit lebih berantakan daripada hanya:
$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
Ada cara lain selain contoh kode pertama, seperti keluar dari HEREDOC untuk memanggil fungsi, atau membalik masalah dan melakukan sesuatu seperti:
?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>
Yang terakhir memiliki kelemahan bahwa output secara langsung dimasukkan ke dalam aliran output (kecuali saya menggunakan buffering output), yang mungkin bukan yang saya inginkan.
Jadi, inti dari pertanyaan saya adalah: adakah cara yang lebih elegan untuk melakukan pendekatan ini?
Edit berdasarkan tanggapan: Memang terlihat seperti beberapa jenis mesin templat akan membuat hidup saya lebih mudah, tetapi pada dasarnya saya harus membalikkan gaya PHP saya yang biasa. Bukan berarti itu buruk, tapi itu menjelaskan kelembaman saya .. Saya siap untuk mencari cara untuk membuat hidup lebih mudah, jadi saya mencari template sekarang.
Text {$string1} Text {$string2} Text
di heredoc.