61 votes

Pourquoi devrais-je utiliser le système de templates en PHP?

Pourquoi devrais-je utiliser le système de template en PHP?

Le raisonnement derrière ma question est: PHP lui-même est riche en fonctionnalités, système de template, pourquoi devrais-je installer un autre moteur de template?

Les deux seuls pros que j'ai trouvé pour l'instant:

  1. Un peu plus propre syntaxe (parfois)
  2. Moteur de Template n'est généralement pas assez puissant pour mettre en œuvre une logique d'entreprise de sorte qu'il vous oblige à séparer les préoccupations. De template en PHP peut vous attirer de marcher autour de la création de modèles de principes et de commencer à écrire le code de la soupe de nouveau.

... et les deux sont tout à fait négligeable par rapport aux inconvénients.

Petit exemple:

PHP

<h1><?=$title?></h1>
<ul>
  <?php foreach ($items as $item) {?>
  <li><?=$item?></li>
  <?php } ?>
</ul>

Smarty

<h1>{$title}</h1>
<ul>
  {foreach item=item from=$items}
  <li>{$item}</li>
  {/foreach}
</ul>

Je ne vois vraiment pas de différence du tout.

26voto

Kent Fredric Points 35592

Oui, comme vous l'avez dit, si vous ne vous forcez pas à utiliser un moteur de template à l'intérieur de PHP ( le moteur de template ), il devient facile de glisser et de cesser de séparer les préoccupations.

Cependant, les mêmes personnes qui ont des problèmes de séparer les préoccupations fin de la génération de code HTML et de le nourrir à smarty, ou l'exécution de code PHP Smarty, de sorte que Smarty est pas la résolution de votre souci de séparation problème.

Voir aussi:

18voto

Kylotan Points 14114

La principale raison les gens utilisent des systèmes de modèle est de séparer la logique de présentation. Il y a plusieurs avantages qui en découlent.

Tout d'abord, vous pouvez remettre un modèle à un web designer qui peut déplacer les choses comme ils l'entendent, sans avoir à vous soucier de garder le déroulement du code. Ils n'ont pas besoin de comprendre le PHP, juste pour savoir laisser les balises spéciales seul. Ils peuvent avoir à apprendre un peu de la simple sémantique pour quelques balises, mais c'est beaucoup plus simple que de l'apprentissage de toute langue.

Aussi, en divisant la page dans des fichiers séparés, programmeur et designer peut travailler sur la même "page" à la fois, en vérifiant au contrôle de code source comme ils en ont besoin, sans conflits. Les concepteurs peuvent tester leur modèle visuels à l'encontre d'une version stable du code, tandis que le programmeur est de faire d'autres, potentiellement dernières modifications, à l'encontre de leur propre copie. Mais si ces gens étaient à la fois l'édition le même fichier, et devait fusionner dans différents changements, vous pouvez rencontrer des problèmes.

Il applique également bien pratique, en gardant la logique des affaires loin de la logique de présentation. Si vous mettez votre logique métier mélangé avec la présentation, puis vous avez un moment difficile de l'extraire si vous avez besoin de le présenter différemment plus tard. Les différents modes de présentation dans les applications web sont de plus en plus populaires ces jours-ci: les fils RSS/ATOM, JSON ou les réponses AJAX, WML pour les appareils de poche, etc. Avec un système de template ceux-ci peuvent souvent être entièrement effectuée avec un modèle et pas ou peu de changement à tout autre chose.

Pas tout le monde à besoin ou apprécier toutefois, ces avantages. PHP avantage sur Java/Python/Ruby/etc, c'est que vous pouvez rapidement pirater des pages web avec un peu de logique, et c'est bien bon.

13voto

gasper_k Points 453

À l'aide de non-templates PHP avec l'excuse de séparer la logique est absurde. Si le développeur ne pas comprendre ce que l'entreprise-vue de la logique de séparation et comment cela doit être fait, alors le problème doit être réglé de façon appropriée. Sinon vous vous retrouvez avec HTML dans une logique d'entreprise ou de la logique métier dans les modèles-pas de moteur de template va vous sauver. Vous devez enseigner le développeur de la base.

Et si le développeur ne comprendre que, le système de template est uniquement une limitation. Il n'ajoute aucune valeur pour le processus de développement, seulement les frais généraux de l'apprentissage d'une nouvelle syntaxe, en gardant une autre bibliothèque jusqu'à ce jour, et plus lent à l'exécution. Alors que ce dernier peut être résolu avec la mise en cache et autres joyeusetés, ce recours à un problème qui n'existe pas. Ainsi, la création de modèles de systèmes n'offrent aucune valeur, aucun avantage.

Il y a une exception, cependant, lorsque je pense à l'aide d'un non-PHP système de modèles est raisonnable: lors de l'affichage logique que les programmeurs doivent avoir un accès limité à des modèles. Par exemple, si vous êtes un fournisseur pour un blog-système d'hébergement et vous souhaitez permettre à vos utilisateurs de personnaliser et le code de leurs modèles, sans leur permettre d'exécuter du code arbitraire. Cet argument, toutefois, ne sont pas applicables dans les cas où un designer est prêt à apprendre un peu de code pour aider à la programmation de l'INTERFACE utilisateur. Si il peut apprendre Smarty, il peut certainement apprendre le PHP.

9voto

Vadim Ferderer Points 680

Il y a toujours une bonne raison pour un système de template à utiliser, toutefois pas Smarty, mais PHPTAL. PHPTAL sont des modèles XML valide (et donc XHTML) des fichiers. Vous pouvez plus utiliser mannequin contenu dans PHPTAL et ainsi d'obtenir valide XHTML fichier avec l'apparition finale, qui peut être traité et testé avec des outils standard. Voici un petit exemple:

<table>
  <thead>
    <tr>
      <th>First Name</th>
      <th>Last Name</th>
      <th>Age</th>
    </tr>
  </thead>
  <tbody>
    <tr tal:repeat="users user">
      <td tal:content="user/first_name">Max</td>
      <td tal:content="user/last_name">Mustermann</td>
      <td tal:content="user/age">29</td>
    </tr>
  </tbody>
</table>

PHPTAL moteur de template pour insérer automatiquement toutes les valeurs des utilisateurs de tableau et de le remplacer nos valeurs factices. Néanmoins, la table est déjà XHTML valide qui peut être affichée dans un navigateur de votre choix.

5voto

Gabriel Sosa Points 4801

pour moi, l'une des grandes caractéristiques des modèles de moteurs, c'est que le cache de la couche de transparent pour vous. J'ai été en utilisant smarty longtemps, et le cache des trucs rendre la vie plus facile. aussi le smarty design vous permettent d'utiliser votre propre fonctionnement de la mémoire cache. Dans mon cas, je choisis si pour certains, la page doit utiliser memcache ou disque pour stocker le modèle de sortie.

en revanche si votre site a un gros trafic et vous ne savez pas comment gérer smarty et tuning bien ce modèle de moteur pourrait être un site de tueur. mais même pas en utilisant smarty votre site peut mourir aussi.

flickr est actuellement à l'aide de smarty. sa ne devrait pas être mauvais de soo, n'est-ce pas?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X