SINTASSI HEREDOC-HEREDOC SYNTAX (PHP)

HEREDOC è un modo di rappresentare una stringa conservando la sintassi compresi i ritorni a capo e le indentazioni.
In PHP in particolare, le variabili vengono interpretate ed esplose nel testo ed in più, non essendo presenti dei delimitatori di stringa come le virgolette o gli apici non c'è bisogno di fare in continuazione concatenazioni di stringhe o escape con il carattere \.

Quante volte ci siamo trovati nella situazione di dover far scrivere a PHP con il comando echo un po' (tanto) codice HTML ed abbiamo scritto interminabili concatenazioni di stringa . $variabili . stringa ecc ecc? Forse troppe….

La sintassi HEREDOC ci viene incontro aiutandoci anzi salvandoci da questo ingrato compito!

Quello che ieri avremmo scritto così:

<?php
$immagine_logo = "http://www.google.it/intl/it_it/images/logo.gif";
echo "LOGO DI GOOGLE:<br><br><img src=\"". $immagine_logo . "\" alt=\"Login\" title=\"Login\">";

?>

da oggi possiamo scriverlo così:

<?php
$immagine_logo = "http://www.google.it/intl/it_it/images/logo.gif";

echo <<<EOT
LOGO DI GOOGLE<br><br><img src="$immagine_logo" alt="Login" title="Login">
EOT;

?>

Ho evidenziato nel secondo codice quello che è il cuore della tecnica HEREDOC.

Dopo il comando echo si inseriscono tre segni di minore <<< seguiti da una stringa di caratteri (solitamente 3 caratteri in maiuscolo ma non è una regola) e subito dopo si va a capo.

Dalla linea successiva tutto quello che viene trovato viene letto da PHP ed eventualmente interpretato (per esempio le variabili).

Per indicare la fine del nostro testo si inserisce la stringa che in precedenza abbiamo usato accanto a <<< questa volta senza segni di minore. Non è obbligatorio inserire il punto e virgola  ma io lo faccio per rendere più chiaro che è terminato un comando.

Oltre ad usare il comando echo ovviamente potete usare qualsiasi altra cosa vi serva. Considerate i delimitatori HEREDOC come le virgolette ma più comode!

Potete per esempio associare una stringa ad una variabile ,in questo caso non sarà necessario fare l'escape delle virgolette:

<?php
$titolo = <<<TITOLO
Questa stringa viene associata alla variabile e non c'è bisogno di usare l'escape \ se ci fossero virgolette " o apici ' !!!
TITOLO;
?>

L'intera riga sarebbe assegnata alla variabilie $titolo.

Trovo molto utile e comoda la sintassi HEREDOC specialmente quando devo costruire tabelle o form e mischiare in continuazione HTML e variabili PHP. Una volta preso il via… è veramente insostituibile. ;-)

Alcuni accorgimenti e consigli:

  • dopo i tre segni di minore <<< attaccate la stringa da voi scelta senza spazi e subito dopo andate a capo. Se lasciate spazi vuoti o altri caratteri dopo il delimitatore di inizio HEREDOC non funzionerà!
  • discorso simile per il delimitatore di fine, deve essere su una riga nuova ed accostato a sinistra, senza uno spazio ne altro ne prima ne dopo.
  • Il punto è virgola alla fine non è obbligatorio ma vi consiglio di usarlo per mantenere una sintassi omogenea nel vostro codice. Sarà più facile leggerlo in futuro.
  • Specialmente nel caso di stringhe lunghe o complesse usate un delimitatore che vi aiuti anche a capire cosa contiene come nel caso del titolo ho usato <<<TITOLO / TITOLO;
  • Poichè PHP interpreta le variabili è comunque necessario eseguire l'escape del segno del $ che diventerà quindi \$.

 


HEREDOC non è una caratteristica che nasce con PHP ma è presente in altri lunguaggi ed ambiti di programmazione in generale:

http://en.wikipedia.org/wiki/Here_document

Il manuale PHP da altri utili consigli:

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc


Spero vi sia utile, buona programmazione

F.

You can leave a response, or trackback from your own site.

Leave a Reply