8791 sujets

Développement web côté serveur, CMS

Oyé Oyé,

J'aurai voulu avoir quelques précisions sur l'utilisation des tags permettant d'écrire du texte sur plusieurs lignes sans porter attention aux divers " ou '.
En effet, à la place du 'echo' j'ai pour habitude d'utiliser des choses de ce genre là :

$HTML=EOF<<<
<div id="toto">
$variablePHP
...
</div>
EOF;


La chose dont je suis sûr c'est que EOF peut être remplacer par n'importe quelle valeur en majuscule (sans espace). Le tag de fin (ici EOF;) doit être en début de ligne sans aucun espace devant (ni derrière ?).

Les avantages de cette méthode sont multiples :
- Les variables PHP peuvent être directement utilisées
- Il est possible d'indenter son code html comme on veut
- Nul besoin de s'ennuyer pendant des heures avec les " ou ' ou \' etc...

Jusque là tout va bien. Le problème est que je suis en train de tester une nouvelle manière d'utiliser ce genre de tag et cela ne marche pas Smiley decu
Voici ce que je cherche à faire :
$this->HTML=<<<EOF
  <html>
   code html ....
EOF;
echo 'toto';

$this->HTML.=<<<EOF
  suite du code html
  ...
EOF;


En procédant ainsi, pratiquement tout le code HTML est bien interprété sauf que mon navigateur affiche également :
EOF;echo'toto';.=<<<

Je ne comprends vraiment pas car j'ai retrouvé d'anciens projets où j'ai réalisé des lignes de codes similaires, exemple :
$HTML=<<<EOF
      <body>
	<div id="header">
EOF;
if($User->isLoggedIn()){
	$HTML.=<<<EOF
	Bienvenue, $User->prenom $User->nom
	<a href="?p=deconnexion">déconnexion</a>
EOF;
/*
* etc...
*/


Et cela marchait très bien ! Smiley sweatdrop Des idées ?
Modifié par Bistou (18 Apr 2008 - 15:03)
Administrateur
Bonjour,

je n'ai jamais essayé avec l'opérateur de concaténation .= et donc je ne sais pas si c'est censé fonctionner ou pas mais avant cela, est-ce que tu n'aurais pas un problème de format de fin de ligne Unix/Win ?
Cf. http://www.projectomega.org/article.php?lg=fr&php=oreilly_php4&p=1 (recommendation 5)
Si c'est PSPad que tu utilises, vérifie qu'en bas tu as bien la même chose parmi les choix DOS/UNIX/MAC
Salut Felipe,

Merci pour ta réponse. L'opérateur de concaténation marche bien avec la syntaxe "heredoc". J'utilise Dreamweaver et je n'ai pas trouvé le format de fin de ligne dont tu parles.