Pur PHP/HTML vues VS moteurs de template vues
Je voudrais savoir quelle approche est la plus rapide, à l'aide de la pure PHP dans les fichiers HTML ou en utilisant un modèle de moteurs comme Smarty,Twig, ...
Ce que j'aimerais particulièrement savoir est la suivante: qui est analysée plus rapidement, est le cache Smarty par exemple plus rapide que d'utiliser uniquement du PHP?
Lequel des moteurs de template est le plus rapide? Je suis sur le point de réécrire application simple où la vitesse est sur la première place.
OriginalL'auteur Jernej Gololicic | 2012-02-20
Vous devez vous connecter pour publier un commentaire.
"Dépend" est la réponse à toutes vos questions.
Ce qui est "plus rapide"? Le temps d'exécution? Temps de développement? L'entretien? Surcharge de la mémoire? Un mélange d'entre eux? Un moteur de template est généralement de négociation dans certaines performances (vitesse, mémoire) pour un meilleur développement et de la maintenance.
Si vous parlez purement dynamique de template (ce qui signifie: modèle évalué à chaque requête) PHP va fuir tout moteur de template. C'est un nobrainer, vraiment. Si vous êtes à la mise en cache de la prise en compte, un moteur de template comme Smarty peut aider. La mise en cache est rien que vous ne pouvait pas mettre en œuvre vous-même en PHP, cependant. Avec Smarty c'est juste fait pour vous (et sur un niveau plus sophistiqué que vous peut-être).
Si vous utilisez un cadre, dire Symfony, il pourrait être judicieux d'utiliser Twig, comme Twig et Symfony sont étroitement intégrés. Bien sûr, vous pouvez utiliser Smarty ou PHP. La question ici est: est-il possible?
La mise en cache de sens que si les sites de construction à partir de sources de données, comme une base de données ou à distance Api. Ce que vous êtes vraiment d'enregistrement (dans le sens d'une réduction) voici des appels de base de données, calcul intensif, etc. Vérifiez si vous avez tout le temps les fonctions gourmandes en cours d'exécution pour construire votre site. Si oui, utiliser la mise en cache (si vous pouvez).
Sachant développement/maintenance/confort/performance de compromis, et je voudrais (toujours) vous recommandons d'utiliser un moteur de template. Être un Smarty développeur, je vais, bien sûr, suggère l'utilisation de Smarty. C'est moins que vous êtes à l'aide de Symfony, alors vous pourriez être mieux avec Twig. Ou un autre cadre mettant en vedette certains autres moteur de template.
S'il vous plaît ignorer les messages comme Smarty vs Twig, comme ils ne comparer d'une façon très limitée des moteurs. Ne faites pas confiance à des repères que vous n'avez pas vous-même les faux™.
En général, cependant, Smarty 3.1 est un peu plus rapide que la Brindille. Twig est de faire beaucoup de choses au moment de l'exécution (c'est le moment où un modèle est exécuté) que Smarty n'est sur le moment de la compilation (soit le moment où un modèle est prêt pour l'exécution). Twig est pas vraiment pisser loin de vitesse ici. Brindille a besoin de faire certaines choses à l'exécution, par la conception. Ils ont échangé un peu de performance pour un peu de "convenienve" (Accès à des tableaux et des objets avec la même notation, par exemple).
OriginalL'auteur rodneyrehm
Laisser déchirer les tropes liées à ce sujet à part:
Toute personne qui le dit et puis vous dit d'aller avec les templates sont contradictoires:
Ils doivent cesser de mentir à eux-mêmes. Leur syntaxe spécifique' est un langage de programmation intégré sur le dessus de l'autre, qui à son tour est construite au-dessus encore un autre de la langue Qui est inefficace, redondant, et bizarre.
En outre, je ne vois pas comment l'existence même de la variables chaque moteur de template qui ne l'a jamais été en dépend ne sont pas considérés comme la logique de Leur existence, le contenu et la mise en œuvre dépend d'un logique backend.
Et que dire de ces systèmes de template avec si/d'autre états et pour boucles? C'est l'essence même de la logique de La très concepts qui plus programmation langues utilisent. Ils exigent variable données qui ne peuvent être générés ou exister par le biais d'une certaine forme de calcul.
Vous ne pouvez pas vous servir du contenu dynamique sans mélange de présentation avec la logique. C'est impossible.
Donc, vous n'avez pas confiance votre HTML gars?
Cas: Vous pensez que votre code HTML/CSS mec est stupide et accidentellement impression de la base de données de mot de passe
Si c'est le cas, j'ai des nouvelles pour vous - même, Votre environnement est déjà pas sûre en cas de données sensibles peut être consulté ou modifié à partir de n'importe où dans le programme.
Cas: Vous pensez que votre HTML gars va imprimer aléatoire serveur constantes - c'est dangereux pour lui permettre, en tant qu'individu, pour travailler avec le serveur logique
Je vois qu'Il soit stupide, ou qu'il déteste son travail et veut être tiré, et va donc faire quelque chose de stupide comme l'impression des variables de session. Fine, mais que je vais dire...
...Pourquoi diable est-ce le genre de choses pas examinées par des pairs? Même si il n'avait pas d'accès direct au serveur de la logique, mais plutôt une fantaisie de système de template, il pourrait toujours aussi étaler sa bêtise/haine, simplement parce qu'il a le dernier mot sur la sortie. Ou, il pourrait même être de mèche avec un autre programmeur (le Cas échéant), et l'accès de serveur de constantes et co.
-
Vous dummy.
Vous ne savez pas quand la sortie doivent être désinfectés? Vous ne pouvez pas le faire vous-même..?
Même alors, peut-être vous êtes juste le code du singe et de l'HTML mec est un web-sécurité HTML spécialiste de l'injection, et il devrait être celui de la désinfection de sortie. Dans ce cas, de lui donner accès à PHP lui permet également d'utiliser les goûts de
htmlspecialchars()
plutôt que quel que soit le modèle lui donne à faire la même chose.Concernant automatique échapper, à condition que vous êtes en toute sécurité en passant le long de contenu, vous pouvez mettre en œuvre une telle fonctionnalité simple, dans le code que vous faites.
--
Penser à des classes, des fonctions, etc - Vous jeter des données dans des, ils travaillent avec elle, alors vous obtenez un résultat. Généralement, ils ne traitent pas les données de l'extérieur, sauf si il est remis à eux (sinon, est difficile, dangereux, et les mauvaises pratiques - Certaines constantes de côté). Au travers de ces mêmes méthodes, vous pouvez transmettre précisément ce dont vous avez besoin pour votre sortie dans un efficace, clair et illimité manoir.
--
Tout ce que dit, il semble que la raison pour laquelle vous pense votre moteur de template est plus sécuritaire que le code est parce que vous êtes défaut dans plusieurs domaines de l'intérêt général sécurité:
La vérité c'est que c'est pas plus compliqué que de la pseudo-syntaxe créé par le modèle des systèmes tels que Smarty, donc si c'est une question de contenu dynamique n'est pas pour vous.
La suivante est en PHP 'syntaxe courte' - Est-il trop difficile?
<div class='username'><?= $username ?></div>
Mais je dirais qu'il ne l'est pas, vous êtes libre de choisir ce que vous voulez! Choisir ce qui répond le mieux à vos besoins. Ils sont libres d'habitude, pas difficile à intégrer, et de venir avec des charges de fonctionnalités de la boîte.
Je suis sous l'impression que la plupart des gens optent pour la création de modèles tout simplement parce qu'il paraît "plus propre" dans le fichier - Ils l'amour en pensant que le fichier TPL est quelque chose de spécial qu'ils ont créé, ils aiment la façon dont la syntaxe ressemble; Comme si, par magie, la variable est "appelée" par le peu de
@
ou#
symbole et de houblon de votre logique dans la sortie.Il semble comme un truc - La belle enchanteresse (AKA Le moteur de template de) vous attire par sa beauté. Bien qu'elle attire l'œil, elle est vraiment un suceurs de sang de démon et des extraits de votre âme (les ressources du Serveur) en échange de bonbons pour les yeux personne ne le voit (Vos utilisateurs préférerais de beaucoup avoir un site web plus rapide et plus de fonctionnalités financé par les $$$ que vous faites l'économie d'énergie/server location)
J'avoue, il y a un seul cas où, je pense, dans lequel les modèles ont tout terrain au cours de PHP - Transférabilité à d'autres applications. appartisan réponse adresses. Même ainsi, il n'est pas difficile de remplacer
<?= $var ?>
avec{{@var}}
- C'est d'un emploi pour un template-esque système.Je pense que c'est la meilleure réponse. Pourquoi nous n'avons tout simplement pas coller à l'essentiel quand il n'y a effectivement pas beaucoup d'avantages supplémentaires. Si nécessaire, on peut utiliser:
htmlspecialchars()
. Il devrait être bien. Je Préfère raw php. Grâce à Super Chat.OriginalL'auteur Super Cat
Purement et simplement avis, je pense que le seul avantage est la portabilité. Vous pouvez ré-utiliser des modèles ou des vues à partir d'un moteur de template dans d'autres application backend. Dire que vous êtes à déplacer votre application à partir de PHP Java, vous n'avez pas besoin de revoir les modèles.
Sinon, vous êtes en ajoutant de la complexité, en ajoutant une autre couche de l'exécution ( plus de temps ), en plus d'exigences pour maintenir la demande ( vous avez besoin de gens qui ne connaît que le moteur de template ), et ainsi de suite. PHP lui-même, il est le meilleur et le plus complet modèle de moteur que vous allez obtenir, probablement le plus rapide, et vous pouvez faire la mise en cache d'ailleurs, avec l'avantage de contrôle du cache de l'application backend, et non pas à partir de la vue.
OriginalL'auteur appartisan
Je vais prendre ce nouveau que les choses ont changé de manière significative et il y a certains éléments de preuve manquants à partir de la précédente réponse.
Sans rentrer dans pourquoi les cadres utilisation de moteurs de template sur PHP qui la plupart le font. Pour une raison quelconque il y a un effort constant afin de "fixer" PHP avec une autre couche d'abstraction. Toujours avec des revendications de la simplicité sans perte de polyvalence ou de la performance.
Peu importe, l'utilisation de PHP est toujours le plus rapide et le plus polyvalent de la création de modèles. PHP c'est premières incarnations ressemblait un langage de templating. Mais nous allons prendre un regard sur les avancées de PHP et de les placer côte à côte avec l'après-couches.
Twig et quelques autres prétendent cache quelque chose qui a toujours été un addon dans les versions antérieures de PHP. La mise en cache est maintenant un défaut de PHP5.5+ (Opcache) et l'utilisation de PHP comme langage de template donnera plus d'améliorations des performances.
Twig et d'autres prétendent syntaxe simple pour les concepteurs. En comparant les la syntaxe d'un moteur de template vous verrez que la logique est similaire avec le seul avantage de l'utilisation d'un modèle de système comme le Rameau d'être une autre couche de sécurité de séparation entre le designer et le système sous-jacent de code.
Deux très populaires de la CMS WordPress et Drupal PHP que leurs moteurs de template. De sorte que le vieil argument de l'utilisation d'un moteur de template pour sécuriser et simplifier l'utilisation de PHP lors de la conception d'un site web n'est pas vraiment valable dans le web d'aujourd'hui. Alors que Drupal 8 est de passer à la Brindille qu'il est principalement parce que la brindille est une partie du Framework Symfony ( retour à pourquoi faire les cadres utilisation de moteurs de template). WordPress, sur l'autre main est toujours à l'aide de PHP. Comme WordPress est de plus en plus par des sauts et des limites avec les concepteurs web à l'aide de PHP à l'aide de ce lieu. Drupals de la Communauté a également été divisé en partie par les décisions d'utiliser Twig et Symfony.
Il semblerait donc que l'utilisation de PHP est le meilleur choix en termes de performances, mais aussi de la préférence pour les themers et les concepteurs d'aller de l'avant. Au moins tous les éléments de preuve conduit à cette conclusion.
Cela étant dit, voici mon opinion sans fondement. Je pense que l'utilisation d'autre chose que PHP comme moteur de template dans le web d'aujourd'hui couvre certaines des faiblesses inhérentes dans le cadre sous-jacent ou de l'architecture d'application web. Cette faiblesse étant son complexités et les complications qui ne peut être expliqué facilement au concepteur ou themer niveau.
Si vous écrivez une application légère qui doit être petite. Garder les petites et fonctionne de façon optimale en utilisant PHP et de laisser les autres moteurs de recherche "entreprise" au niveau des groupes et des projets
OriginalL'auteur Carl McDade
J'ai un problème avec l'argument que la logique et l'affichage des données doit être separared autant que possible. J'ai trouvé que la validation des données et l'affichage nécessite beaucoup de logique sur les formes. Des informations sur le type de données, le numéro de plage, la relation entre les différentes données nécessite beaucoup de code. La vraie question est doit-on utiliser un modèle de langue sur le côté serveur ou Javascript côté client. En utilisant Ajax côté client et le code pour l'affichage de données et de validation, je finis par avoir très peu de code de modèle. Le plus gros problème avec les moteurs de template est l'intoduction de nouvelles règles du code et de la syntaxe. Je vois l'avenir avec PHP, Jquery et Ajax et moteurs de template de perdre de son attrait.
OriginalL'auteur Stephane Lapointe