Question à 2 balles avec les constantes

Eléphant du PHP | 53 Messages

21 déc. 2007, 16:39

Bonjour à tous!

J'aimerais savoir comment je peux faire en sorte que PHP interprète ma constante prédéfinie dans une syntaxe HERE-DOC (et même dans une chaine de caractères) car j'ai tenté comme d'hab les accolades mais ça marche pas!

Code : Tout sélectionner

define('_NOM','Ben'); $test = <<<HAHA voilà je m'appelle _NOM; HAHA; echo $test; merci!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 déc. 2007, 16:59

Aucune idée en ce qui concerne la syntaxe heredoc, en revanche pour l'utiliser dans une chaine, il suffit de l'en sortir et de la concaténer (comme il faudrait le faire pour n'importe quelle variable afin d'avoir un code plus lisible et limiter les risques d'erreur)
define('_NOM','Ben'); 
$test = "voilà je m'appelle " . _NOM; 
echo $test; 
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

21 déc. 2007, 18:05

ok merci pour la réponse même si j'étais au courant!

:wink:

La question s'applique donc en dehors de la concaténation!

Merciiiiiiiii! et merry christmas!! :D

Invité
Invité n'ayant pas de compte PHPfrance

24 déc. 2007, 12:22

Euh au fait le problème n'ets pas résolu hein!

Je continue à me demande rcomment intégregr une constante dans une chaine de caractères et donc indirectement dans une syntaxe HERE-DOC!
define("_NOM","Ben");
$str = "bonjour je m'appelle _NOM";
echo $str;
Ce bout de code ne m'affiche pas "je m'appelle Ben"...mais bien "je m'appelle _NOM";

Idem si je mets la constante entre crochets.

Qqun a une idée ?[/code]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 déc. 2007, 12:27

Quand on dit que sortir les variables/constantes des chaines est une bonne pratique ;)
define("_NOM","Ben");
$str = "bonjour je m'appelle ". _NOM;
echo $str;
Non seulement, quand tu laisses une variable dans une chaine, PHP a plus de travail, mais en plus, tu risque ce genre d'erreur.
D'un point de vue plus personnel, je dirais également que sortir les variables des chaines me permet de les remarquer plus rapidement et que mon IDE (Eclipse) ne fait pas de surlignage dans les chaines ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 928 Messages

25 déc. 2007, 05:38

Bonsoir,
je ne crois pas qu'il soit possible d'utiliser des constantes dans les HEREDOCS, cependant tu peux y utiliser des variables
<?php

$var = 'toto';

echo <<<EOF
Une variable dans un heredoc : $var
EOF;

?>
Donc il suffit à la limite d'assigner ta constante dans une variable au préalable.