Sephi-Chan Bavard

Nombre de messages: 44 Age: 20 Localisation: Yerres (91) Date d'inscription: 27/03/2006
 | Sujet: Syntaxe "here document" de echo Mer 12 Juil - 0:42 | |
| Salut à tous, En feuilletant le manuel de PHP, je suis tombé (...) sur quelque chose de très intéressant... Un doigt !! ... Nan, j'déconne. | Code: | echo <<<END Cette syntaxe s'intitule le "here document" et permet d'afficher plusieurs lignes avec de l'interpolation de variables. Notez que la fin de la syntaxe doit apparaître sur une nouvelle ligne, avec uniquement un point-virgule, et pas d'espace de plus ! END;
|
J'ai aussitot fais un test :
| Code: | $chaine = "Ecoutez, laissez la police faire son travail, dès que j'aurais de plus amples informations croyez bien que vous en serez les premiers informés.";
echo <<<END $chaine <br> strlen($chaine) END;
|
Et ça me renvoi :
| Citation: | Ecoutez, laissez la police faire son travail, dès que j'aurais de plus amples informations croyez bien que vous en serez les premiers informés. strlen(Ecoutez, laissez la police faire son travail, dès que j'aurais de plus amples informations croyez bien que vous en serez les premiers informés.) |
Je trouve cette façon de faire très pratique pour afficher les gros bloc pleins de variables qu'on retrouve souvent, notamment après une requête SQL.
Il est à noter ui est que les variables d'array ne passent pas sous la forme $plop['plop'], il faut enlever les guillements pour que ça fonctionne, pour avoir $plop[plop].
Exemple d'utilisation :
On peut remplacer :
| Code: | echo ' <li><a href="index.php?p=transferts/achats_2&joueur='.$sql4['id'].'">Acheter '.$sql4['nom'].'</a> <table><caption>'.$sql4['nom'].' - Niveau #'.$sql4['niveau'].'</caption> <tr> <th>Endurance</th><th>Vitesse</th><th>Résistance</th><th>Attaque</th> </tr> <tr> <td>'.$sql4['endurance'].'</td><td>'.$sql4['vitesse'].'</td><td>'.$sql4['resistance'].'</td><td>'.$sql4['attaque'].'</td> </tr> <tr> <td colspan="4">Salaire : '.$sql4['salaire'].' Gils par match</td> </tr> </table></li>';
|
Par :
| Code: | echo <<<END <li><a href="index.php?p=transferts/achats_2&joueur=$sql4[id]">Acheter $sql4[nom]</a> <table><caption>$sql4[nom] - Niveau #$sql4'niveau]</caption> <tr> <th>Endurance</th><th>Vitesse</th><th>Résistance</th><th>Attaque</th> </tr> <tr> <td>$sql4[endurance]</td><td>$sql4[vitesse]</td><td>$sql4[resistance]</td><td>$sql4[attaque]</td> </tr> <tr> <td colspan="4">Salaire : $sql4[salaire] Gils par match</td> </tr> </table></li> END;
|
N'est-ce pas plus lisible ?
J'éspère que ce post sera utile à quelques uns '.
Sephi-Chan |
|
naholyr Langue pendue
Nombre de messages: 97 Date d'inscription: 08/06/2006
 | Sujet: Re: Syntaxe "here document" de echo Mer 12 Juil - 8:36 | |
| Pour les tableaux (et les variables en général) pour éviter toute ambiguité lorsqu'elles sont incluses dans une chaine on peut les encadrer d'accolades {}. Si on veut utiliser un caractère alphanumérique collé à la droite de la variable : Ne fonctionne pas : -->| Code: | echo "j'ai 3 $chiens."; | Fonctionne mais pas joli : -->| Code: | echo "j'ai 3 $chien"."s."; | Fonctionne ET joli : -->| Code: | echo "j'ai 3 {$chien}s." |
Cela permet : - d'isoler des variables (cf. exemple ci-dessus) : echo "début{$variable}fin" - d'utiliser des tableaux sans ambiguité et avec les guillemets : echo "avant{$tableau['index']}après";
Et cela fonctionne avec la syntaxe heredoc. |
|