$html = <<<HTML
<p>Hello world</p>
HTML;
// equivalent:
$html = "<p>Hello world</p>";
Questo utilizza la PHP string Heredoc syntax, che è una sintassi di scrivere una stringa, simile ad usare le virgolette singole e doppie virgolette, ma sfuggire le cose in un modo in qualche modo diverso. È possibile utilizzare {}
per inserire direttamente alcune stringhe PHP in esso.
<?php
ob_start();
?>
<p>Hello world</p>
<?php
$html = ob_get_clean();
Questa è una cosa totalmente diversa. Utilizza lo PHP output buffering control per acquisire elementi che sono non all'interno di blocchi di codice PHP. Come nell'esempio fornito, <p>Hello world</p>
è scritto al di fuori del blocco di codice PHP, che dovrebbe essere immediatamente inviato al client. Con il buffer di output abilitato vengono memorizzati in un buffer in PHP, in modo che possa essere recuperato in un secondo momento utilizzando ob_get_contents()
o ob_get_clean()
. Se è necessario inserire variabili PHP, è necessario utilizzare <?=$blah?>
o anche <?php echo $blah?>
.
Alcuni CMS utilizzano le funzioni di controllo del buffer di uscita per gestire contenuti e moduli. Un esempio è Joomla. Il vantaggio di questo design è che ogni volta che il modulo deve posizionare il contenuto nel suo spazio riservato, può semplicemente usare echo
per rendere il contenuto disponibile. Ciò può semplificare il modo di ottenere contenuti dai moduli, senza dover implementare una specifica chiamata di funzione o assegnare a una variabile specifica, il che rende più facile la gestione del sistema.
<?php
ob_start();
include dirname(__FILE__)."/content.php";
$content = ob_get_clean();
output_document(array("body"=>$content));
Ho anche fare uso delle funzioni di uscita di buffering in modo tale che posso includere un file in alto, e senza avere alcuna PHP alla fine riesco a creare un semplice modello di sistema, ma questo è una sorta di fuori tema.
fonte
2012-11-19 14:23:25
Direi che gli EREDOC sono ovviamente molto più puliti. Non è anche "diversi modi di scrivere sul buffer". Gli HEREDOC sono un modo per * riportare una stringa *. 'ob_' è un, oserei dire, hackerare per catturare qualsiasi output prima che si spenga. – deceze
D'accordo con l'inganno, la maggior parte delle funzioni 'ob_ *' indicano un cattivo design. Poi di nuovo HEREDOC urla 'view layer' nel controller o nel modello. –
@MikeB urla anche "Heeey dammi i soldi per un altro programmatore!" –