2010-01-27 4 views
1

Jouant avec heredocs en PHP, j'ai réalisé que le nom de l'heredoc ne doit pas être unique. Ainsi:Heredocs - En utilisant le même nom deux fois? Pourquoi les nommer du tout?

$a = <<<EOD 
Some string 
EOD; 

$b = <<<EOD 
A different string 
EOD; 

est correct et se comporte exactement comme vous vous y attendiez.

Est-ce une mauvaise pratique pour une raison quelconque? Pourquoi un heredoc a-t-il besoin d'un nom/label (EOD ci-dessus), puisque vous ne pouvez pas le référencer par son nom?

Répondre

3

si la chaîne vous spécifiez contient EOD?

Vous pouvez sélectionner l'identificateur pour éviter les conflits avec le segment de texte que vous utilisez en tant que chaîne.

+1

exactement. alors vous utilisez un délimiteur différent qui n'est pas EOD. Notez que la fin des hérédocs doit commencer sur le premier caractère de la ligne, ce qui aide à la spécificité. Notez également que le texte substitué n'est pas analysé pour le terminateur heredoc - cela signifie que vous pouvez simplement scanner votre code une fois pour cette simple erreur, et vous savez que vous ne l'avez pas fait. –

2

Vous n'avez pas référence comme tel, mais il agit comme un identifiant pour indiquer la fin du heredoc. par exemple.

$a = <<<EOD 
EOA 
EOB 
EOC 
EOD; 
0

L'un des avantages est que les éditeurs comme vim peuvent appliquer la coloration syntaxique à heredocs nommé avec le langage HTML, EOHTML, EOSQL, EOJAVASCRIPT ce qui les rend beaucoup plus joli à travailler avec ...

Questions connexes