Heredoc Syntax

Scritto da loige

Php ci mette a disposizione uno strumento molto utile per marcare l’inizio e la fine di una stringa. Come ben sappiamo è possibile marcare una stringa sia con gli apici che con i doppi apici, ma con entrambe dovremmo comunque stare molto attenti nell’utilizzare all’interno della nostra stringa i doppi apici o l’apice singolo.

Ad esempio le due righe di codice successivo porteranno sicurametne un errore durante l’esecuzione della nostra pagina php:

 
$myFirstString = ‘ Ciao a tutto l’ Universo‘;
$mySecondString = " Il mio cane si chiama "GIOVE" ";
 

Com’è facile intuire nella prima stringa l’apice dopo la ” l ” verrà riconosciuto come un marcatore di chiusura della stringa, quindi l’interprete php riconoscerà la parola Universo come una funzione o comunque come un elemento esterno alla stringa e ciò produrrà un errore. Analogamente nel secondo caso. Per ovviare al problema bisogna semplicemente “slashare” gli apici e i doppi apici che sono parte della stringa. Ad esempio i seguenti codici sono corretti:

 
$myFirstString = ‘ Ciao a tutto l\’ Universo’;
$mySecondString = ” Il mio cane si chiama \”GIOVE\”;

Adesso non dovreste più ottenere fastidiosi errori.
Talvolta però vi è la necessità di inserire in una stringa del testo molto lungo in cui si presentano parecchie volte gli apici e i doppi apici come elementi di stringa e non come marcatori di fine e inizio stringa. Basta pensare ad un codice html dove ogni proprietà dei tag è inclusa tra doppi apici e spesso troviamo decine e decine di tag anche in codici html relativametne brevi. In questi casi può essere davvero frustrante dover “slashare” tutti quegli apici. Vediamo un esempio:
Supponiamo di voler inserire in una stringa php il codice HTML seguente:

<p>A <a href=”language.types.string.php” ><b class=”type” >string</b></a> is series of characters. In PHP, a character is the same as a byte, that is, there are exactly 256 different characters possible. This also implies that PHP has no native support of Unicode. See <a href=”function.utf8-encode.php”><b class=”function”>utf8_encode()</b></a> and <a href=”function.utf8-decode.php”><b class=”function”>utf8_decode()</b></a> for some Unicode support.</p>

ecco come dovremmo inserire tale stringa utilizzando la sintassi classica:

 
$theHTMLstring = ” <p>A <a href=\”language.types.string.php\” ><b class=\”type\” >string</b>
</a> is series of characters.In PHP, a character is the same as a byte, that is, there are exactly
 256 different characters possible. This also implies that PHP has no native support of Unicode. 
See <a href=\”function.utf8-encode.php\”><b class=\”function\”>utf8_encode()</b></a> and 
<a href=\”function.utf8-decode.php\”><b class=\”function\”>utf8_decode()</b></a> 
for some Unicode support.</p> “;

Come notate questa sintassi è un po scomoda da leggere ed è davvero fastifdioso dover inserire tutti gli slash manualmente (con il rischio di dimenticarne qualcuno). Per fortuna php ci mette a disposizione una sintassi alternativa chiamata HEREDOC per delimitare l’inizio e la fine di una stringa:

 
$heredoc = <<<ID
Ciao mondo!
ID;

Come Notiamo questa nuova sintassi ci permette di iniziare una stringa con i seguenti caratteri:

<<<IDENTIFICATORE

e di terminare tale stringa con:

IDENTIFICATORE;

L’indentificatore possiamo sceglierlo a piacere purchè sia uguale sia all’inizio che alla fine e sia conforme alle regole di sintassi di una variabile, ovvero non deve iniziare con un carattere numerico o un underscore e può contenere solo caratteri alfanumerici e il carattere underscore.
Attenzione però che l’identificatore finale deve cominciare necessariamente alla prima colonna di una nuova riga, altrimenti non verrà riconosciuto.
Com’è facile immaginare questa sintassi ci permette di inserire qualsiasi stringa senza preoccuparci di dover slashare gli apici ed i doppi apici, facendoci così risparmiare tempo, fatica e il rischio di incappare in errori dovuti alla mancanza di qualche slash.

Per maggiori informazioni su questa sintassi vi consiglio vivamente di leggere la guida ufficiale php: Heredoc Syntax .

Sponsor

1 Commento a “Heredoc Syntax”

  1. Ciao volevo informarvi che Free Penguin è diventato www.freepenguin.it e quindi magari potreste modificare il link presente nel sito!

    Grazie 1000

    Free Penguin

Scrivi un commento