4.2.5.1 Syntaxe
4.2.5 Les chaînes de caractères
4.2 Les types
4 Référence du langage
Manuel PHP
. Guillemets simples . Guillemets doubles ->Syntaxe Heredoc . Traitement des variables dans les chaînes . Accès et modification des caractères d'une chaîne
|
4.2.5.1.3 Syntaxe Heredoc
Un autre moyen de délimiter les chaînes est d'utiliser
la syntaxe dite "
Heredoc
"
(en français, documentation ici): <<<,
suivi d'un identifiant arbitraire, puis de la chaîne,
puis l'identifiant initial pour terminer la séquence.
L'identifiant fermant
doit
commencer
à la première colonne de la 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é.
Attention |
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
d'espacement ou de tabulation avant ou après le point virgule.
Il est également important de noter que le premier caractères
avant l'identifiant de fermeture doit être une nouvelle ligne,
tel que définie par votre système. Par exemple, ce sera
\r
sous Macintosh.
Si cette règle n'est pas respectée et que l'identifiant de fermeture
n'est pas correct, alors, il ne sera pas considéré comme un
identifiant fermant et PHP continuera d'en chercher un.
Si dans ce cas aucun identifiant de fermeture n'est trouvé,
une erreur d'analyse sera émise, contenant comme numéro de ligne
la fin du script.
Il n'est pas autorisé d'utiliser la syntaxe "
Heredoc
"
lors de l'initialisation des membres d'une classe.
Utilisez une autre syntaxe pour les chaînes à la place.
Exemple incorrect |
<?php class foo { public $bar = <<<EOT bar EOT; } ?>
|
|
La syntaxe
Heredoc
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.
|
|