Here document

Un Here Document aussi appelé heredoc, document en ligne ou encore document « ici-même » est une manière de déclarer une chaîne de caractères dans les interpréteurs de commandes comme les shells Unix (sh, ksh, csh, bash, zsh) et dans les langages de programmation ou de script comme Perl, PHP, Python, Ruby et JCL. Il conserve tous les sauts de lignes et espaces dans le texte, indentation comprise. Certains langages permettent l'interprétation de variable dans la chaîne.

La syntaxe la plus courante consiste en une paire de chevrons << suivie d'un délimiteur, suivi sur la ligne suivante par la première ligne du heredoc, clos à la fin par le délimiteur sur sa propre ligne.

Si la paire de chevrons est immédiatement suivie d'un tiret <<- toutes les tabulations en début de ligne du heredoc seront éliminées lors de l'interprétation de la commande. Ceci permet d'indenter le contenu du heredoc par rapport au reste du script et assurer une meilleure lisibilité.

Exemples

Shell Unix

On passe ici un here document dans l'entrée standard de la commande tr du shell Unix, dans le but de mettre en majuscule toutes les minuscules :

$ tr a-z A-Z <<FIN
> oui oui oui c est moi Belzébuth !
> FIN
OUI OUI OUI C EST MOI BELZéBUTH !

FIN est utilisé comme délimiteur du here document, ce dernier se trouve donc entre les deux FIN. OUI OUI OUI C'EST MOI BELZÉBUTH ! est le résultat de la commande. > est une invite de prompt indiquant que l'édition de la ligne de commande n'est pas encore achevée.

Il est possible d'interpoler une variable du shell dans le here document :

cat <<MON_NOM_EST
> Mon nom est $LOGNAME
> MON_NOM_EST
Mon nom est jeanpierre

PHP

En PHP, on parle de heredoc. Cela permet d'y inclure des apostrophes et des guillemets dans une chaine de caractères sans les échapper.

<?php
 
$name       = "Joe Smith";
$occupation = "Programmer";
echo <<<EOF

	Section heredoc.
	Pour plus d'information, veuillez vous adresser à $name, votre $occupation local.

	Merci !

EOF;
?>

Depuis PHP 5.3, nowdoc est aussi disponible[1]

Avant PHP 7.3, il était impératif de mettre l'identifiant de fermeture ("EOF;" ci-dessus) seul sur une nouvelle ligne (sans indentation)[2].

nowdoc

La syntaxe nowdoc est une variante de heredoc consistant à ajouter des apostrophes autour du nom, et qui n’interprète pas les variables. Exemple en PHP :

echo <<<'MON_NOM_EST'
    Mon nom est $LOGNAME
MON_NOM_EST
// Affiche : Mon nom est $LOGNAME

Références

  • Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.