Comment produisez-vous votre HTML ?

Les rubriques (actu, forums, tutos) de Développez
Tags
Réseaux sociaux


 Discussion forum

Retrouvez le dossier complet de la rédaction
Le , par Benjamin Delespierre, Expert Confirmé Sénior
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 :
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 :
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 :
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 ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de vaild vaild
http://www.developpez.com
Membre actif
le 06/11/2012 15:22
"Ah. Du coup j'ai un doute. Une instruction PHP est bien convertie en opcode, non ?"

possible.
ce n'en est pas pour autant. php c'est php, opcode c'est opcode...
un binaire c'est un binaire.
C++ c'est C++, et avant compilation en autre chose, ce n'est rien de plus que du texte.

Comme le français, par exemple.
Je ne nie pas que ça finit sous forme d'instruction utilisées par un binaire, je dis juste qu'un langage n'est pas un binaire.
Avatar de CyberDenix CyberDenix
http://www.developpez.com
Candidat au titre de Membre du Club
le 06/11/2012 15:26
Citation Envoyé par vaild  Voir le message
o_O PHP c'pas du binaire !!

Citation Envoyé par laffreuxthomas  Voir le message
Ah. Du coup j'ai un doute. Une instruction PHP est bien convertie en opcode, non ?

Je viens de chercher un peu et il semblerait que le jeu d'instructions opcode de PHP soit indépendant de la plateforme, à l'instar du bytecode Java. Dans ce cas la différence entre un langage semi-interprété façon Java et interprété façon PHP c'est juste le moment de la compilation : à la volée ou non. Il est très possible que je me trompe.

J'ajoute que le bytecode Java est bel et bien traduit en langage machine juste avant son exécution. Il existe donc bien au final du code machine correspondant à une instruction Java. Donc l'instruction Java a été convertie en code machine, qu'on appelle ça (semi-)compilation ou non. Pour PHP j'en suis moins sûr mais il me semblait qu'il en allait de même.


Tu as raison.



Source : http://julien-pauli.developpez.com/t...e=page_2#LII-C

Il est évident que pour être exécuté, à moment donné le code PHP est converti en binaire. Que ce soit par une phase de transition (OpCode, ByteCode) ou directement, tout langage est converti en binaire.
Avatar de vaild vaild
http://www.developpez.com
Membre actif
le 06/11/2012 15:34
Mf. relis mon post précédent. PHP c'pas du binaire. c'est peut-être destiné à en devenir, mais c'est du texte. point.
Avatar de laffreuxthomas laffreuxthomas
http://www.developpez.com
Membre éprouvé
le 06/11/2012 15:35
OK il y a une VM, c'est bien ce qu'il me semblait.

Donc oui vaild se trompe : le code qui tourne, c'est du binaire, en PHP comme en C++. Et il y a bien un processus de compilation, même s'il se fait en plusieurs fois, ça ne change rien, c'est toujours une compilation.

Et c'est différent d'un programme qui analyserait par exemple des commandes déposées dans une table d'une base de données afin de les exécuter en tâche de fond : dans ce cas il n'y a pas de compilation, les commandes ne sont pas traduites en langage machine, le code machine est celui du programme seul. (Je soupçonne les langages de Shell de procéder ainsi.)
Avatar de vaild vaild
http://www.developpez.com
Membre actif
le 06/11/2012 15:37
idem. relis-moi.

le code qui tourne c'est du binaire. mais php n'en est pas pour autant.
Avatar de laffreuxthomas laffreuxthomas
http://www.developpez.com
Membre éprouvé
le 06/11/2012 17:04
Oui tu es bien gentil de m'expliquer que le code source n'est pas le langage machine.

Donc oui un code source PHP n'est pas du code machine, sauf que c'est le cas pour n'importe quel langage de programmation et les histoires de (je te cite) "compilés, semi-compilés & interprétés" ne changent rien à l'affaire. Du moins dans le cas discuté ici.
Avatar de RPGamer RPGamer
http://www.developpez.com
Membre à l'essai
le 19/11/2012 10:07
Pour ma part, avec une méthode de mon cru. Évidemment le HTML et le PHP sont séparés, c'est un minimum.
Avatar de Hotei Hotei
http://www.developpez.com
Membre à l'essai
le 26/11/2012 14:57
Salut à tous.

En fait tout va dépendre de son utilisation.
Pour ce qui est des projets / applications web, j'utilise symfony 2 donc Twig systématiquement.
Pour ce qui est des codes "plus simple" qui ne seront utilisés que pour des mini sites ou applications, le mélange des 2 est quand même moins chiant et lourd que de passer par un MVC complet avec template
Avatar de greg91 greg91
http://www.developpez.com
Membre régulier
le 02/01/2013 14:47
Des balises PHP dans du code html.

Plus clair pour l'intégrateur.
Avatar de John Blobsmith John Blobsmith
http://www.developpez.com
Membre habitué
le 03/01/2013 13:49
Moteur de template!!!

Surtout pour :
- bien séparer la vue du contrôler.
- plus de lisibilité, même des balises php dans tu html ça reste des balises...
- puis avec du php dans du html y'a toujours un moment ou ça dérape avec un petit malin qui va mettre du code autre que pour la présentation.
Avatar de neowinder neowinder
http://www.developpez.com
Futur Membre du Club
le 24/03/2013 21:03
J'utilise le moteur de Template de Laravel, qui ressemble à twig (celui de symfony).

C'est plus lisible d'avoir le PHP et le html (par moteur de template) de l'autre, plus de flexibilité surtout si on fait appel à un webdesigner ou autre corps de métiers.

Citation Envoyé par Hotei  Voir le message
...
Pour ce qui est des codes "plus simple" qui ne seront utilisés que pour des mini sites ou applications, le mélange des 2 est quand même moins chiant et lourd que de passer par un MVC complet avec template

@Hotei : Pas forcément, pour mon cas, Laravel est léger comme Codeigniter mais possède des caractéristique des gros framework comme Symfony, sur qui laravel 4 pompe pas mal de bundle Et c'est moins lourd à mettre en place, qu'un site symfony
Offres d'emploi IT
Développeur java
CDI
DEVERYWARE - Ile de France - Paris (75009)
Parue le 29/07/2014
Responsable data / web analytics
CDI
MOBISKILL - Ile de France - Paris (75000)
Parue le 25/07/2014
Développeur front-end en « chef »
CDI
Mobiskill - Ile de France - Paris (75000)
Parue le 28/07/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula