Notazione “Here Document” in PHP

Logo PHP

Logo PHP

Capita spesso, soprattutto nei linguaggi web meno formali come il PHP, di voler inserire contenuto “client” di una certa dimensione direttamente all’interno del file contenente la logica server.

Nei casi più semplici, ovvero quando il contenuto da mandare in output è un breve testo, il problema non sussiste in quanto il PHP offre già la funzione echo o print a questo scopo.

Cosa succede invece quando ciò che vogliamo inserire è molto lungo, magari con caratteri non alfanumerici quali apici, doppiapici, etc… ? Di certo potremo utilizzare ancora echo o print (con qualche accorgimento in più), ma non sarebbe una soluzione proprio comoda.

In questi casi il linguaggio ci viene in aiuto fornendo una speciale tecnica che consente di racchiudere notevoli quantità di testo e “spararli” direttamente all’output senza troppe storie: parliamo della notazione Here Document, per gli amici heredoc.

La notazione è molto semplice e prevede per la stringa da inserire (un po’ come il CDATA dell’XML) un delimitatore di inizio e uno di fine, rispettivamente:<<<EOF e EOF;

Facciamo un semplice esempio, supponiamo di voler mandare in output la seguente porzione di testo:

Salve
a
Tutti

Il relativo codice PHP per inviare in output il testo sarà :

echo <<<EOF
Salve
a
Tutti
EOF;

Lo stesso codice anziché mandarlo in output possiamo anche assegnarlo ad una variabile e, cosa importante, diversamente da una classica costante stringa non è necessario effettuarne l’escaping dei caratteri.

Altra cosa simpatica: il codice EOF può essere cambiato a piacimento in qualiasi altra stringa, purchè venga usato sia come delimitatore iniziale che finale. Avremmo ad esempio potuto scrivere:

echo <<<PIPPO
Salve
a
Tutti
PIPPO;

L’utilizzo di EOF è puramente convenzionale. Non lo è invece la mancanza di indentazione del delimitatore finale che, per regola, non deve avere indentazioni di sorta, pena un errore di parsing.

Infine, da poco tempo è anche possibile (dalla versione 5.3.0 di PHP) inserire variabili PHP da “espandere” all’interno del testo, rendendo lo strumento ancora più comodo e potente.

Alla prossima!

Rispondi