Un autre moyen de délimiter les chaînes est d'utiliser
la syntaxe de "Here doc" (en français, documentation ici): <<<,
suivi d'un identifiant arbitraire, puis de la chaîne. Cette
séquence se termine par l'identifiant initial, placé en
premier sur une nouvelle ligne.
L'identifiant utilisé doit suivre
les mêmes règles que les étiquettes PHP : il ne
doit contenir uniquement que des caractères alpha-numériques,
et des soulignés ("_"), et enfin, commencer par un
caractère alphabétique ou un souligné.
Il est très important de noter que la ligne qui contient
l'identifiant de fermeture ne doit contenir aucun autre
caractère, hormis, éventuellement, un point-virgule ;.
Cela signifie notamment que l'identifiant ne doit
pas être indenté, et qu'il n'y a aucun caractère
blanc entre le retour à la ligne et l'identifiant,
ou bien entre l'identifiant et le ;.
Le plus dur est peut être qu'il ne faut pas qu'il y ait
un retour à la ligne ((\r) à la fin de cette
ligne, mais seulement un form-feed (\n).
Puisque Microsoft Windows utilise la séquence
\r\n comme terminaison de ligne,
la syntaxe heredoc risque de ne pas fonctionner là. Cependant,
la plupart des éditeurs PHP fournissent une sauvegarde
au format UNIX.
La syntaxe Here doc se comporte exactement comme une chaîne à
guillemets doubles, sans les guillemets doubles. Cela signifie
que vous n'avez pas à échapper les guillemets (simples ou doubles)
dans cette syntaxe. Les variables sont remplacées par leur valeur, et
le même soin doit leur être apporté que dans les chaînes
à guillemets doubles.
Exemple de chaîne HereDoc
<?php
$str = <<<EOD
Exemple de chaîne
s'étalant sur
plusieurs lignes
avec la syntaxe heredoc
EOD;
/* Exemple plus complexe, avec des variables. */
class foo {
var $foo;
var $bar;
function foo() {
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
}
}
$foo = new foo();
$name = 'MonNom';
echo <<<EOT
Mon nom est "$name". J'affiche des $foo->foo.
Maintenant, j'affiche un {$foo->bar[1]}.
Ceci se traduit par un 'A' majuscule: \x41
EOT;
?>
Note :
Le support Here doc a été ajouté en PHP 4.