Je reviens aussi sur les différentes couches de l'application, fonctionnelle et vue pour simplifier (il y en a d'autres).
Tout le monde parlent de templates et se met en tête de vouloir absolument séparer intégralement le php du html.
Je suis d'accord il ne faudrait jamais voir du HTML dans du PHP, mais l'inverse ? Je me pose la question quand même...
J'ai envie de dire que tout dépend du but final de l'application. S'il s'agit de créer (comme les forums phpbb par ex.), une usine à gaz qui pourra être personnalisée par n'importe qui dans la couche vue sans prendre le risque de modifier la partie fonctionnelle d'accord. Mais je le redis, il s'agit en général d'usines à gaz, et tout le monde sait que les hébergeurs (en mutualisé surtout) n'aiment pas beaucoup ce genre d'application.
Les templates c'est bien, mais ça ralentit quand même considérablement le temps d'exécution.
Maintenant admettons qu'on ait un projet abordé avec une bonne conception Objet, des classes propres et bien construites, n'intégrant aucun html biensur.
Si ce projet était de proposer différents "templates" pour des sites clients permettant de lister par exemple des produits en fonction de critères de recherche (très répandu hein).
Par exemple mes produits seraient des "trucs" ok. Sur ma page d'accueil, j'ai une liste de "trucs" et le détail d'un seul "truc".
Qu'y-a-t'il de mauvais à avoir par exemple :
Code:
1 2 3 4 5 6 7 8
| // Avant ça création de la connexion à la BDD avec une classe générique
// et on aurait au final un objet $db
$listeTrucs = new ListTrucs($db, $id_client);
$listeTrucs->getListBySearch($criteres, $_POST);
$monTruc = new Truc($db);
$monTruc->getTrucById($listeTrucs->items[0]['id_truc'] ); |
J'invente hein, evidemment ce serait plus réfléchis que ça.
Mais qu'est-ce qui empêche vraiment pour la vue de faire directement dans le HTML :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<?php
$count = count($listeTrucs->items);
for ($i = 0; $i < $count; $i++) { ?>
<div id="items-list">
<div class="item"><?=$listeTrucs->trucBidule?></div>
</div>
<?php
}
?> |
Ok c'est moins lisible, mais n'est-ce pas bien plus performant ?
Je vous pose la question, la séparation totale des couches a-t-elle un autre intérêt que la lisibilité ? Perso, j'essaie de séparer au maximum aussi, mais je me pose quand même la question sur l'intérêt réel.
Benjamin.