In PHP, le dichiarazioni di stringa HEREDOC sono davvero utili per l'output di un blocco di html. Puoi farlo analizzare nelle variabili semplicemente anteponendole $, ma per una sintassi più complicata (come $ var [2] [3]), devi inserire la tua espressione tra parentesi graffe {}.
In PHP 5, è possibile effettuare effettivamente chiamate di funzione tra parentesi graffe {} all'interno di una stringa HEREDOC, ma è necessario eseguire un po 'di lavoro. Il nome della funzione stessa deve essere memorizzato in una variabile e devi chiamarlo come se fosse una funzione con nome dinamico. Per esempio:
$fn = 'testfunction';
function testfunction() { return 'ok'; }
$string = <<< heredoc
plain text and now a function: {$fn()}
heredoc;
Come puoi vedere, questo è un po 'più disordinato del semplice:
$string = <<< heredoc
plain text and now a function: {testfunction()}
heredoc;
Esistono altri modi oltre al primo esempio di codice, come uscire da HEREDOC per chiamare la funzione o invertire il problema e fare qualcosa come:
?>
<!-- directly output html and only breaking into php for the function -->
plain text and now a function: <?PHP print testfunction(); ?>
Quest'ultimo ha lo svantaggio che l'output viene inserito direttamente nel flusso di output (a meno che non stia utilizzando il buffer di output), il che potrebbe non essere quello che voglio.
Quindi, l'essenza della mia domanda è: esiste un modo più elegante per affrontare questo problema?
Modifica in base alle risposte: Certamente sembra che una sorta di motore di template mi renderebbe la vita molto più semplice, ma mi richiederebbe fondamentalmente di invertire il mio solito stile PHP. Non che sia una brutta cosa, ma spiega la mia inerzia .. Tuttavia, sto cercando di trovare modi per rendere la vita più facile, quindi ora sto esaminando i modelli.
Text {$string1} Text {$string2} Text
in heredoc.