La syntaxe heredoc est beaucoup plus propre pour moi et elle est vraiment utile pour les chaînes de caractères de plusieurs lignes et pour éviter les problèmes de citation. À l'époque, j'avais l'habitude de les utiliser pour construire des requêtes SQL :
$sql = <<<SQL
select *
from $tablename
where id in [$order_ids_list]
and product_name = "widgets"
SQL;
Selon moi, la probabilité d'introduire une erreur de syntaxe est plus faible qu'en utilisant des guillemets :
$sql = "
select *
from $tablename
where id in [$order_ids_list]
and product_name = \"widgets\"
";
Un autre point est d'éviter d'échapper les guillemets doubles dans votre chaîne :
$x = "The point of the \"argument" was to illustrate the use of here documents";
Le problème avec ce qui précède est l'erreur de syntaxe (le guillemet échappé manquant) que je viens d'introduire, par opposition à la syntaxe du document :
$x = <<<EOF
The point of the "argument" was to illustrate the use of here documents
EOF;
C'est un peu de style, mais j'utilise ce qui suit comme règles pour les documents simples, doubles et ici pour définir les chaînes de caractères :
-
Simple Les guillemets sont utilisés lorsque la chaîne de caractères est une constante telle que
'no variables here'
-
Double alors que je peux placer la chaîne sur une seule ligne et avoir besoin d'une interpolation variable ou d'un guillemet simple incorporé.
"Today is ${user}'s birthday"
-
Ici pour les chaînes de caractères de plusieurs lignes qui nécessitent un formatage et une interpolation de variables.
4 votes
Il n'y a pas de raison forte pour que les alternatifs soient meilleurs que les hérédocs.
18 votes
J'ai édité ceci pour être plus constructif, et j'ai fait de la question un wiki communautaire car elle est assez subjective. Note, la communauté peut encore fermer cette question, j'ai choisi de la laisser ouverte parce que vous obtenez des réponses de qualité.
9 votes
Pourquoi exactement cette question n'est-elle pas considérée comme constructive ?