Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Comment produisez-vous votre HTML ?
Avec un moteur de template? Avec echo ? A votre manière ?

Le , par Benjamin Delespierre

0PARTAGES

2  1 
Comment produisez-vous votre HTML ?
Bonjour à tous,

Il est de notoriété publique que le principal usage de PHP soit la création dynamique de flux HTML. Mais bien qu'il existe diverses façons de produire et d'afficher ce flux de données, il n'y a pas vraiment de recommandations en la matière, chacun est libre de faire à sa convenance.

Je vous propose donc un petit sondage: quelle méthode employez-vous pour produire votre HTML ?

Traditionnellement, on peut tout simplement décrire son HTML et y insérer des balises spéciales là où on veut du dynamisme. Cette méthode était connue sous le nom de phtml et est d'ailleurs supportée nativement par Apache au même tittre qu'un script PHP classique:

En Mélangeant le PHP et le HTML
Code PHP : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php 
$user = "Jean"; 
$messages = array( 
    'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 
    'Cras sit amet mi quis mauris varius dignissim id et ipsum.', 
    'Quisque id lacus lorem.' 
); 
?> 
<!DOCTYPE HTML> 
<html lang="en-US"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Mes messages</title> 
</head> 
<body> 
    <? if (!isset($user)): ?> 
    <p class="error">Veuillez vous connecter</p> 
    <? else: ?> 
    <h2>Bienvenue <?=$user?></h2> 
    <span>Vous avez <?=count($messages)?> messages en attente</span> 
    <? foreach ($messages as $message): ?> 
    <p class="message"><?=$message?></p> 
    <? endforeach ?> 
    <? endif ?> 
</body> 
</html>

Dans cet exemple, nous nous sommes servi de la syntaxe alternative ainsi que la directive short_open_tag que je trouve beaucoup plus claire et naturelle que l'imbrication d'accolades ouvrantes/fermantes.

On peut également recourir à la structure echo:

Avec echo
Code PHP : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php 
$user = "Jean"; 
$messages = array( 
    'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 
    'Cras sit amet mi quis mauris varius dignissim id et ipsum.', 
    'Quisque id lacus lorem.' 
); 
  
echo '<!DOCTYPE HTML> 
<html lang="en-US"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Mes messages</title> 
</head> 
<body>'; 
  
if (!isset($user)) { 
    echo '<p class="error">Veuillez vous connecter</p>'; 
} 
else { 
    echo '<h2>Bienvenue ' . $user . '</h2>', 
         '<span>Vous avez ' . count($messages) . ' messages en attente</span>'; 
  
    foreach ($messages as $message) { 
        echo '<p class="message">' . $message . '</p>'; 
    } 
} 
  
echo '</body> 
</html>';

Ou encore, on peut utiliser un moteur de template tel que Smarty ou phpBB pour ne citer que les plus connus:

Avec Smarty
Code PHP : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE HTML> 
<html lang="en-US"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Mes messages</title> 
</head> 
<body> 
    {if $user} 
    <p class="error">Veuillez vous connecter</p> 
    {else} 
    <h2>Bienvenue {$user}</h2> 
    <span>Vous avez {$messages|@count} messages en attente</span> 
    {foreach ($messages as $message)} 
    <p class="message">{$message}</p> 
    {/foreach} 
    {/if} 
</body> 
</html>

Et vous ?

Laquelle de ces techniques utilisez-vous et pourquoi ?
Utilisez-vous un moteur template et lequel ?
Avez-vous une tout autre technique pour produire votre flux ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de FirePrawn
Expert éminent sénior https://www.developpez.com
Le 25/10/2012 à 16:32
J'utilise le PHP et le HTML mélangé personnellement.

Et j'exècre particulièrement la méthode echo que je trouve immonde
4  0 
Avatar de gene69
Membre émérite https://www.developpez.com
Le 26/10/2012 à 9:44
Et j'exècre particulièrement la méthode echo que je trouve immonde

je fais des écho et ça marche.

Et ya qu'en php ou on se permet de faire des choses comme ça (a ma connaissance).

Code php : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php // pour le colorateur 
  
//  
function tell($toto){ 
print( $toto ); 
?> fait du php<?php 
} 
  
  
  
// méthode immonde ???? 
function tell($toto){ 
echo $toto, ' fait du php'; 
}

moi j'ai vite choisi.
3  0 
Avatar de transgohan
Expert éminent https://www.developpez.com
Le 26/10/2012 à 13:27
J'ai jamais passé la marche vers les templates. Enfin si une fois vers Smarty mais j'ai eu plein de soucis de choses que j'arrivais pas à faire et j'ai pas eu le courage d'aller au delà de la documentation...
Donc du coup je code en MVC avec une vue mélangeant HTML et PHP.
4  1 
Avatar de BlueScreenJunky
Membre régulier https://www.developpez.com
Le 26/10/2012 à 13:39
Pour ma part j'évite absolument le echo (je le faisais à une époque, mais c'est trop peu lisible à mon goût, surtout qu'on perd la coloration syntaxique et la validation html de l'IDE).

Donc mélange de php ou HTML pour les pages web assez simple, ou moteur de template (Twig dans mon cas, mais smarty a l'air très bien aussi) pour les projets plus consistants.
3  0 
Avatar de jreaux62
Rédacteur/Modérateur https://www.developpez.com
Le 26/10/2012 à 15:13
Bonjour,
je sépare en général le HTML du PHP. Je trouve que c'est plus clair et plus lisible.
Des echo ... peuvent être ponctuellement utiles (quand la séparation des codes ne se justifie pas).

Par contre, en tant qu'enc...leur de mouches professionnel, j'aurais écrit :
- "En séparant le HTML du PHP" au lieu de "En Mélangeant le PHP et le HTML"
- "En incluant le HTML dans le PHP (avec echo)" au lieu de "Avec echo"

J'ai failli cliquer "A ma manière", avant de voir les exemples donnés...
3  0 
Avatar de grunk
Modérateur https://www.developpez.com
Le 25/10/2012 à 16:10
Avec un moteur de template , en l'occurence Twig (sans symfony).

Ça le gros avantage d’empêcher les intégrateurs/graphiste de venir bidouiller du code qu'ils n'ont en principe pas à toucher (ils se retrouvent avec un "langage" inconnue et du coup ne tente pas de modifier).

J'avais fait un passage sur smarty2 mais twig m'a ensuite très vite conquis par sa synthaxe et son code source.

Après quand j'ai le choix j'essai de plutôt utiliser des fichiers html avec quelques <?php echo $mavar ?> pour le gain de performance comparé à tout un moteur de template.
2  0 
Avatar de ABCIWEB
Expert éminent https://www.developpez.com
Le 25/10/2012 à 19:25
Par défaut et de préférence, en mélangeant PHP+HTML.

Mais cela dépend du contexte, certaines fonctions ou classes peuvent renvoyer un bloc de code par un echo. Ce sont des critères comme la clarté du code, la facilité de mise en place, l'évolutivité et la maintenance qui impliquent le choix final.

Sinon, je me suis intéressé un peu à la syntaxe Heredoc, mais je trouve qu'il y a trop de contraintes et de restrictions pour généraliser facilement son usage. Je la garde donc plutôt en réserve pour les cas où son emploi est manifestement plus pratique que la syntaxe classique.

Les short open tags peuvent provoquer des confusions avec d'éventuelles balises xml et dépendent de la configuration du serveur donc j'évite de les utiliser. Avec php 5.4 "<?=" sera toujours disponible mais bon ce ne sera pas ma priorité.

Quant à la syntaxe alternative, je comprend pas l'intérêt que certains y accordent. Certes on peut trouver cela plus clair (et encore ça se discute), mais pour moi ce qui ne se discute pas c'est que cela rend évidemment totalement inopérant l'équilibrage des accolades dans mon éditeur favori Nan là pour moi c'est vraiment trop rédhibitoire
2  0 
Avatar de OlivierW
Futur Membre du Club https://www.developpez.com
Le 26/10/2012 à 1:20
Citation Envoyé par FirePrawn Voir le message
J'utilise le PHP et le HTML mélangé personnellement.

Et j'exècre particulièrement la méthode echo que je trouve immonde
Dans un sens ou dans l'autre, c'est immonde de mélanger le PHP et l'HTML

J'ai voté moteur de template : XML/XSLT.

Avantages :
  • Rapide
  • Peut être utilisé avec d'autres langages que PHP
  • En natif, compresse ou indente correctement le code généré
  • Le code généré est obligatoirement propre (du XML, donc au choix : XHTML ou XHTML5)


Inconvénients :
  • Pour ceux qui utilisent Dreamweaver, cet éditeur n'est pas foutu de gérer correctement les balises XSL (notamment les templates multiples, les includes,...)
  • Je ne vois pas d'autres inconvénients, j'utilise Eclipse, pas DW
2  0 
Avatar de yotsumi
Membre actif https://www.developpez.com
Le 26/10/2012 à 9:17
Citation Envoyé par ABCIWEB Voir le message
Par défaut et de préférence, en mélangeant PHP+HTML.

Mais cela dépend du contexte, certaines fonctions ou classes peuvent renvoyer un bloc de code par un echo. Ce sont des critères comme la clarté du code, la facilité de mise en place, l'évolutivité et la maintenance qui impliquent le choix final.
Si la clarté du code t'es importante, tu devrais privilégier une séparation stricte des couches.

La pire idée serait de mixer plusieurs des méthodes présentées par cet article...
Soit toutes les vues sont dans des templates (twig/smarty...), soit toutes les vues sont dans des fichiers HTML/PHP (dans lequel tu n'injecte que des données, jamais de HTML, à la SF1 par ex), soit tu fais des echo à l'arrache.
2  0 
Avatar de spoutbe
Nouveau membre du Club https://www.developpez.com
Le 26/10/2012 à 13:12
Avec un moteur de templates en PHP pur:
http://www.massassi.com/php/articles...plate_engines/

In short, the point of template engines should be to separate your business logic from your presentation logic, not separate your PHP code from your HTML code.
J'utilise aussi CakePHP, donc templates en PHP.
2  0