Cette question a un peu vieilli mais pour fournir une réponse plus complète avec quelques solutions possibles. Les conditionnels ne sont pas autorisés "à l'intérieur" d'un heredoc mais vous pouvez utiliser des conditionnels avec heredocs.
Ces exemples devraient vous donner une idée de l'utilisation de Heredoc. Prenez note que la première ligne d'un heredoc commence avec 3 moins de symboles et du texte arbitraire sans espace à la fin de la première ligne. Appuyez sur Entrée. L'heredoc doit être fermé de la même manière. Comme vous le savez probablement, le texte utilisé pour ouvrir heredoc doit être utilisé pour le fermer, ce qui est généralement mais pas obligatoire pour être suivi par un point-virgule. Assurez-vous qu'aucun espace ou caractère final ne suit le point-virgule ou le dernier caractère de texte, puis appuyez sur Entrée.
function doSomething($username = '', $status_id = '') {
if ('' != $username && '' != $status_id) {
$reply = <<<EOT
<a class ="reply" href="[email protected]{$username}&status_id={$status_id}&reply_name={$username}"> reply </a>
EOT;
} else {
$reply = <<<EOT
<h2>The username was not set!</h2>
EOT;
}
return $reply;
}
echo doSomething('Bob Tester', 12);
echo doSomething('Bob Tester');
echo doSomething('', 12);
En fonction de votre situation, vous trouverez peut-être utile d'utiliser une classe pour faire vos comparaisons que vous souhaitez utiliser dans votre heredoc. Voici un exemple de comment vous pouvez faire cela.
class Test {
function Compare($a = '', $b = '') {
if ($a == $b)
return $a;
else
return 'Guest';
}
};
function doSomething($username = '') {
$Test = new Test;
$unme = 'Bob Tester';
$reply = <<<EOT
<h2>Example usage:</h2>
Welcome {$Test->Compare($username, '')}<br />
<br />
Or<br />
<br />
Welcome {$Test->Compare($username, $unme)}
EOT;
return $reply;
}
echo doSomething('Bob Tester');
+1 - lire ici http://www.php.net/manual/en/language.types.string.php – Phil
+1 pour * "J'espère vous faites plus avec heredoc dans votre vrai code "* – jensgram
acclame ça marche, pas d'im retournant un paragraphe entier, cet exemple était juste à titre d'illustration seulement, je didint vouloir te faire mal aux yeux :)) acclamations !! – getaway