Pourquoi utiliser un moteur de template avec un cadre?

j'ai récemment découvert le cadre de PHP Kohana (qui est génial) et je lisais un fil à propos de l'utiliser en conjonction avec un moteur de templage tels que Smarty ou Twig . Ma question est: pourquoi s'en préoccuper? Un cadre MVC, par définition, est sûrement un moteur de modèle. Même" raw " PHP est, sans doute, un moteur de templage. Quels sont les avantages de l'ajout d'un autre niveau d'abstraction supérieur à celui déjà présent dans un cadre comme Kohana?

EDIT - Je me rends compte qu'un MVC framework n'est pas la même chose qu'un templating engine, mais la partie V fait sûrement le même travail? Peut-être une meilleure façon de formuler les choses serait-elle; pourquoi ajouter un moteur de modèle au dessus de la partie V d'un cadre MVC?

28
demandé sur Jens Schauder 2009-11-05 05:41:11

6 réponses

j'ai deux très bonnes raisons de le faire...

  1. créer un markup qui est répété dans tout le site dans un format cohérent est plus facile, et vous pouvez le mettre à jour plus tard sans beaucoup de grapping.
  2. S'il s'agit d'une véritable entreprise, les personnes qui déterminent le contenu ne sont probablement pas vraiment familiarisées avec HTML, et encore moins avec PHP. Avoir un langage de modèle simple qui permet aux styles de regarder de la bonne façon et génère un markup valide sans connaissance du code est vraiment pratique.
17
répondu coreyward 2009-11-05 03:32:38

tout d'abord, le PHP brut n'est pas un moteur de templating.

ensuite, MVC framework définit que le cadre est divisé en modèle, vue et contrôle. Cela ne signifie pas que le framework a un moteur de gabarit, bien que la vue puisse être intégrée avec un moteur de gabarit natif ou externe. Ainsi, le cadre peut avoir ou non un moteur de modèle.

Troisièmement, Vue != modèle. View se réfère uniquement à la façon dont les données sont affichées - il n'y a pas de modèle impliqué habituellement, tandis que moteur de modèle se réfère à un morceau de code capable de mettre des données bien dans les modèles - que vous pouvez réduire considérablement la nécessité de modifier tous les fichiers lorsque vous pouvez les modifier dans les modèles

enfin, les utilisateurs de framework peuvent préférer utiliser un moteur de templating plus commun tel que Smarty sur le moteur de template natif dans le framework. Vous n'avez pas besoin d'apprendre les nouvelles étiquettes dans le moteur de modèle natif.

16
répondu mauris 2009-11-05 03:11:42

sauf si vous autorisez des étiquettes courtes,

{$foo}

est beaucoup plus lisible que

<?php echo $foo; ?>

multiplié sur un grand projet, il s'additionne.

8
répondu DGM 2009-11-05 02:46:30

une grande raison pour laquelle vous voudriez un moteur de template séparé est parce que le PHP brut est un peu trop pour la présentation de votre site. Si c'est juste vous qui Créez votre site, et que vous avez une bonne idée de la façon dont les modèles du site peuvent être assemblés, alors ce n'est pas vraiment un inconvénient, mais pour les projets plus importants, ça devient gênant.

si votre projet a dépassé un seul développeur, ou si vous voulez ajouter designer même avant cela, PHP est probablement trop difficile langue pour exprimer la présentation. Les langages de gabarits spécialement conçus sont avantageux parce qu'ils sont simples et ne vous donnent pas tant de corde que de vous pendre.

les projets plus grands, même s'ils ne nécessitent pas beaucoup d'entrées de plusieurs développeurs, peuvent rendre la forme libre de simple PHP un peu lourde. le moteur de template spécialement construit fournit (ou renforce) une structure de base pour la façon dont chaque template s'intègre avec le reste.

6
répondu SingleNegationElimination 2009-11-05 02:49:08

Mauris a déjà expliqué pourquoi MVC != moteur de template, mais je voudrais ajouter que plus le moteur de template est puissant, plus propre et plus concis vos templates sont. Cela rend particulièrement facile pour les personnes qui ne sont pas familiarisées avec PHP de les éditer (par exemple: si un concepteur/développeur frontal doit éditer le HTML). En général, les MVC ne se vantent pas de ce genre de fonctionnalité.

regardez cet exemple de Smarty. Je n'ai jamais utilisé le moteur et répondre à cette question Est la première fois que je vois sa marge, mais je peux déjà dire exactement ce qu'il fait.

en outre, la quantité de code que vous avez à écrire est sensiblement moins puisque Smarty et d'autres moteurs prennent soin des choses banales pour vous comme les couleurs de rangée de rechange et le contenu de remplacement pour les ensembles de données vides dans le premier exemple, et des choses stupides comme le formatage <select> listes dans cet exemple .

2
répondu Justin Johnson 2017-05-23 12:34:00

MVC implémente la gestion des modèles PHP, Si vous travaillez en équipe avec des concepteurs web pourrait être mieux d'utiliser des modèles HTML. Smarty et Twig sont célèbres et bons. De toute façon, il suffit de choisir le moteur de modèle que vous vous sentez plus à l'aise avec.

1
répondu RainElemental 2014-12-21 10:18:53