Magazine Internet

PHP : Les chaînes de caractères avec les syntaxes HEREDOC et NOWDOC

Publié le 21 septembre 2009 par Methylbro

PHP : Les chaînes de caractères avec les syntaxes HEREDOC et NOWDOC

HEREDOC, principe de base

Pour commencer, penchons nous sur la syntaxe HEREDOC. Vous avez sans doutes déjà pu remarquer ça et là, dans divers script PHP connus ou méconnus, des instructions comme la suivante :

$foo = <<
Bar !
OPERATOR;

C'est une définition de chaîne de caractère différente que l'on peut trouver habituellement avec des quotes mais ici employant la syntaxe HEREDOC. Sont équivalent serait le suivant :

$foo = "Bar !";

Cela s'utilise exactement comme les doubles quotes traditionnels, avec les mêmes effets. Vous pouvez vous-même choisir le nom de l'opérateur que vous utilisez (en remplacement de OPERATOR dans notre exemple) à partir du moment ou vous respectez les règles habituelles des libellés en PHP.

L'inconvénient c'est qu'il est impossible d'indenter l'opérateur de fermeture. Qu'il ne doit être suivi que d'un retour à la ligne correctement écrit (c'est-à-dire un \n, pas un vulgaire retour de chariot).

NOWDOC, tout dans la nuance

Dans son lot de nouveautés, PHP5.3 nous apporte un dérivé fort intéressant de HEREDOC : la syntaxe NOWDOC. Cette nouveauté comporte deux différences :

Premièrement au niveau de sa déclaration ; NOWDOC s'utilise avec les mêmes règles que celles concernant sa grande soeur, avec une seule nuance. A l'ouverture, l'opérateur que vous définissez doit être entouré deux guillemets simples. Comme dans l'exemple qui suit :

$foo = <<<'OPERATOR'
Bar !
OPERATOR;

La deuxième différence se situe au moment de l'exécution. Là ou HEREDOC se comportera comme des doubles quotes et analysera le contenu que vous lui fournissez avant de le retourner, NOWDOC lui n'en fera rien. Exactement que si vous définissiez une chaîne de caractères avec des simple quotes.

Essayez donc l'exemple suivant :

$foo = 'bar';
echo <<
j'écris avec heredoc : $foo \n
HEREDOC;
echo <<<'NOWDOC'
j'écris avec nowdoc : $foo \n
NOWDOC;

Pour encore plus d'informations sur le sujet, je vous propose de vous pencher dans la documentation PHP ; sur le chapitre dédié aux chaînes de caractères.

Documentation PHP : Les chaînes de caractères


Retour à La Une de Logo Paperblog

A propos de l’auteur


Methylbro 17 partages Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte