Reine PHP/HTML-Ansichten VS template-engines Ansichten
Ich würde gerne wissen, welcher Ansatz schneller ist, mit dem reinen PHP-in den HTML-Dateien oder mit Hilfe einer template-engines wie Smarty,Twig, ...
Was möchte ich insbesondere wissen, ist die nächste: was ist schneller verarbeitet, ist der Smarty cache zum Beispiel schneller als mit reinem PHP?
Welche von den template engines ist das Schnellste? Ich bin zu umschreiben, einfache Anwendung, wo die Geschwindigkeit ist auf dem ersten Platz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Abhängt", ist die Antwort auf all Ihre Fragen.
Was ist "schneller"? Ausführungszeit? Entwicklung Zeit? Wartung? Speicher-overhead? Eine Mischung aus beidem? Eine template-engine ist in der Regel den Handel mit einigen performance (Geschwindigkeit, Speicherplatz) für eine bessere Entwicklung und Wartung.
Wenn du redest, rein dynamischen templating (Bedeutung: Vorlage ausgewertet, auf jede Anfrage) PHP wird schneller sein als jede template-engine. Dies ist ein nobrainer, wirklich. Wenn Sie die Einnahme caching berücksichtigt, eine template-engine wie Smarty kann helfen. Caching ist nichts, Sie konnte nicht selber implementieren in plain PHP, wenn. Mit Smarty ist es gerade für dich getan (und noch weit differenzierter, als Sie vielleicht würde).
Wenn Sie mit einem Rahmen, sagen, Symfony, könnte es klug sein, zu verwenden Zweig wie Zweig und Symfony sind eng integriert. Sicher können Sie mit Smarty oder plain PHP. Die Frage hier ist: ist es praktikabel?
Caching Sinn macht, wenn Baustellen aus Datenquellen wie einer Datenbank oder remote-APIs. Was Sie wirklich sparen (im Sinne von verkleinern) hier sind die Datenbank-Aufrufe, intensive Berechnungen, etc. Prüfen Sie, ob Sie irgendeine Zeit-intensive Aufgaben ausgeführt, um zu bauen Ihre Website. Wenn dem so ist, verwenden Sie das Zwischenspeichern (wenn du kannst).
Wissen, Entwicklung/Pflege/Komfort/performance trade-offs, ich würde (immer) empfehlen die Verwendung einer template-engine. Ein Smarty-Entwickler, werde ich, natürlich, empfehlen die Verwendung von Smarty. Es sei denn, Sie sind mit Symfony, dann könnten Sie besser mit Twig. Oder einen anderen Rahmen mit einer anderen template-engine.
Bitte ignorieren Sie Beiträge wie Smarty vs. Zweig, da Sie nur vergleichen eine sehr eingeschränkte Sicht auf die Motoren. Vertrauen Sie nicht benchmarks, die du nicht selbst gefälscht™.
Im Allgemeinen, obwohl, Smarty 3.1 ist ein bisschen schneller als Zweig. Twig ist dabei eine Menge von Sachen, die zur Laufzeit (die Zeit, wenn eine Vorlage ausgeführt wird), dass Smarty nicht auf compile-Zeit (die Zeit, wenn eine Vorlage vorbereitet, die für die Ausführung). Twig ist nicht wirklich Natursekt entfernt speed hier. Twig braucht, um bestimmte Sachen zur Laufzeit durch design. Sie handelten ein wenig Leistung für ein bisschen "convenienve" (Zugriff auf arrays und Objekte mit der gleichen notation, zum Beispiel).
Lasst uns zerreißen die Tropen im Zusammenhang mit diesem Thema auseinander:
Jemand, der dies sagt, und dann sagt, dass Sie gehen mit templating ist widersprüchlich:
Müssen Sie aufhören, Lügen zu sich selbst. Ihre "Template-syntax' ist eine Programmiersprache gebaut auf der Oberseite des anderen, der wiederum gebaut ist auf der Oberseite noch anderen Sprache - Das ist ineffizient, redundant und komisch.
Darüber hinaus sehe ich nicht, wie die Existenz des Variablen jede Template-engine, die es jemals gab, hängt davon ab, nicht als Logik - Deren Existenz, Inhalt und Umsetzung sind abhängig von einer logische backend.
Und was ist mit den templating-Systeme mit wenn/sonst Aussagen und für Schleifen? Das ist die Essenz der Logik Der Konzepte, welche die meisten Programmierung Sprachen nutzen. Sie benötigen variable Daten können nur generiert werden, oder es bestehen durch irgendeine form der Berechnung.
Sie dienen kann, dynamische Inhalte, ohne zu mischen, Präsentation mit Logik. Es ist unmöglich.
So, Sie müssen nicht Vertrauen Ihre HTML-Kerl?
Fall: Sie denken, dass Ihre HTML - /CSS-Kerl ist dumm und wird versehentlich drucken Sie das Datenbank-Passwort
Wenn das so ist, ich habe Neuigkeiten für Sie - und Ihre Umwelt ist bereits nicht sicher, wenn sensible Daten zugegriffen werden kann/geändert von überall innerhalb des Programms.
Fall: Sie denken, dass Ihre HTML-Kerl print random server-Konstanten - es ist gefährlich, ihm zu erlauben, als Individuum, die Arbeit mit server-Logik
Sehe ich - Er ist entweder dumm, oder hasst seinen job und will gefeuert werden, und daher wird etwas tun, dumm wie Druck-session-Variablen. In Ordnung, aber ich werde sagen...
...Warum zum Teufel ist das Zeug nicht peer reviewed? Auch wenn er keinen Zugang zu direkten server-Logik, sondern ein schickes Template system, konnte er immer noch gleichmäßig seine Dummheit/Hass-nur weil er hat das Letzte Wort bei der Ausgabe. Oder, er könnte sogar unter einer Decke stecken mit einem anderen programmer (Wenn überhaupt) und immer noch Zugriff auf die server-Konstanten und co.
-
Dummy Sie.
Sie wissen nicht, wenn der Ausgang sollte desinfiziert werden? Sie konnte das nicht selber..?
Sogar so, vielleicht bist du nur der code monkey und die HTML-Kerl ist ein web-security-HTML-injection-Spezialist, und er sollte sein, die eine Desinfektion der Ausgabe. In diesem Fall, der ihm Zugang zu PHP auch erlaubt ihn zu verwenden, das mag der
htmlspecialchars()
statt, was die Vorlage gibt ihn, das gleiche zu tun.Zur automatischen entkommen, vorausgesetzt, Sie sind sicher vorbei entlang der Inhalte, die Sie implementieren können, wie eine einfache Funktion innerhalb der code, den Sie so tun.
--
Denke über Klassen, Funktionen, etc. - Sie werfen der Daten Sie arbeiten, dann werden Sie ein Ergebnis erhalten. Typischerweise Sie gehen nicht mit externen Daten, es sei denn, es ist Ihnen übergeben (das Tun sonst ist unklar, gefährlich und schlechte Praxis - Einige Konstanten abgesehen). Durch die gleichen Methoden, die Sie weitergeben können, genau das, was Sie brauchen, um Ihre Ausgabe in eine effiziente, klare und unbegrenzte manor.
--
Alles, was gesagt, wie es scheint, der Grund, warum Sie denke deine Template-engine ist sicherer als nur code ist, weil Sie fehlen in verschiedenen Bereichen der Allgemeinen Sicherheit:
Die Wahrheit ist, es ist nicht komplizierter als die Pseudo-syntax erstellt von template-Systeme wie Smarty, so ist dies ein Problem, als dynamische Inhalte nicht für Sie.
Folgende PHP "kurze syntax" - Ist es zu schwierig?
<div class='username'><?= $username ?></div>
Aber ich würde behaupten es geht nicht, du bist frei zu wählen, was Sie wollen! Wählen Sie, was Ihren Bedürfnissen am besten passt. Sie sind in der Regel kostenlos, nicht schwer zu integrieren, und kommen mit vielen Funktionen aus der box.
Ich bin unter dem Eindruck, dass die meisten Menschen entscheiden sich für das templating einfach, weil es aussieht 'ordentlicher' innerhalb der Datei, die Sie lieben zu denken, dass der TPL-Datei ist etwas besonderes, was Sie erstellt haben, Sie die Art, wie die syntax aussieht, Als wenn durch irgendeine Magie, die variable ist ', genannt' der kleine
@
oder#
symbol und Hopfen aus Ihrer Logik in den Ausgang.Es scheint wie ein trick - Die schöne Zauberin (AKA Die Template-engine) zieht Sie mit Ihrer Schönheit. Obwohl Sie optisch sehr Ansprechend, Sie ist wirklich eine blutsaugende Dämon und Extrakte, die Ihrer Seele (Server-Ressourcen) im Austausch für "eye-candy", die niemand anderes sieht (Dein Benutzer würde viel lieber eine schnellere Webseite und weitere Funktionen gefördert durch die $$$ Sie sparen auf Strom - /server-Vermietung)
Ich gebe zu, es gibt nur einen Fall, an den ich denken kann, in denen Vorlagen haben keinen Boden über PHP - Übertragbarkeit auf andere Anwendungen. appartisan Antwort-Adressen. Auch so, es ist nicht schwer zu ersetzen
<?= $var ?>
mit{{@var}}
- Das ist ein job für einen templating-artige system.htmlspecialchars()
. Es sollte in Ordnung sein. Ich Bevorzuge raw-php. Dank Super Katze.Einfach und rein Meinung, ich denke, der einzige Vorteil ist die Portabilität. Sie können re-use-Vorlagen oder Ansichten aus einer template-engine in andere back-End-Anwendung. Sagen Sie sind Sie Ihre Anwendung von PHP nach Java, Sie brauchen nicht zu umgestalten der Vorlagen.
Andernfalls bist du Komplexität hinzufügen, hinzufügen eine andere Ebene der Ausführung ( mehr Zeit ), mehr Anforderungen zu verwalten die Anwendung ( Sie brauchen Menschen, die weiß, dass template-engine ), und so weiter. PHP selbst ist es die beste und Besondere template-engine wirst du bekommen, wahrscheinlich die schnellsten, und Sie können die Zwischenspeicherung auch, mit dem Vorteil des controlling-cache aus dem backend-Anwendung, und nicht aus der Sicht.
Werde ich diese wieder, als die Dinge haben sich erheblich verändert und es gibt einige Beweise, die fehlen, die frühere Antwort.
Ohne sich tief in warum frameworks verwenden template-engines über PHP, die meisten tun. Für einige Grund, es ist der ständige Versuch zu "reparieren" PHP mit einer anderen Abstraktionsebene. Immer mit den Forderungen der Einfachheit halber, ohne Verlust von Flexibilität oder Leistung.
Unabhängig, die Verwendung von PHP ist immer noch die Schnellste und vielseitigste Art von templating. PHP in frühesten Inkarnationen sah viel wie eine Template-Sprache. Aber lassen Sie uns einen Blick auf die Fortschritte in PHP und legen Sie Sie Seite an Seite mit die nach Schichten.
Zweig und einige andere behaupten caching etwas, das war immer ein addon in früheren PHP-Versionen. Caching ist jetzt ein Standard-Bestandteil von PHP5.5+ (Opcache) und so mit Hilfe von PHP als template-Sprache mehr performance-Verbesserungen.
Zweig und andere, die behaupten, einfache syntax für die Designer. Im Vergleich der syntax einer template-engine Sie werden sehen, dass die Logik ist ähnlich, nur mit dem Vorteil der Verwendung einer template-system wie Zweig, die eine andere Sicherheit, die Trennung zwischen dem designer und dem zugrunde liegenden system-code.
Zwei sehr beliebten CMS WordPress und Drupal verwendet PHP als Ihre template-engines. Also das alte argument der Verwendung einer template-engine zu sichern und vereinfachen die Verwendung von PHP bei der Gestaltung einer website ist nicht wirklich gültig in der heutigen web. Während Drupal 8 ist er auf Zweig ist es vor allem, weil der Zweig ist Teil des Symfony-Framework ( Rückkehr zu " warum frameworks verwenden template-engines). WordPress auf der anderen Seite ist immer noch mit PHP. Als WordPress wächst durch Sprünge und Grenzen, die mit web-Entwickler, die mit PHP zu helfen, dies zu erreichen. Drupals Community wurde auch aufteilen in Teil, indem Sie Entscheidungen über die Nutzung Zweig und Symfony.
So würde es scheinen, dass die Verwendung von PHP ist die bessere Wahl, in Sachen Leistung, sondern auch die Vorliebe für themers und Designer für die Zukunft. Mindestens alle Beweise führt zu diesem Schluss.
That being said, hier ist meine unbegründete Meinung. Ich denke, dass mit etwas anderem als PHP als template-engine in der heutigen web-deckt einige inhärente Schwächen in den zugrunde liegenden framework-oder web-Anwendung-Architektur. Das Schwäche seine Komplexitäten und Komplikationen, dass nicht erklärt werden kann, einfach an den designer oder themer Ebene.
Wenn Sie schreiben eine leichte Anwendung, die hat, klein zu sein. Halten Sie es klein und optimal arbeiten durch den Einsatz von PHP und die anderen Motoren auf der "enterprise" - Ebene von Gruppen und Projekten
Ich habe ein problem mit dem argument, die Logik und Darstellung von Daten müssen separared so viel wie möglich. Ich fand, dass die Validierung von Daten und Anzeige tatsächlich erfordert eine Menge Logik auf die Formen. Informationen über Art, Anzahl, Reihe, Beziehungen zwischen verschiedenen Daten erfordert eine Menge code. Die eigentliche Frage ist, sollten wir eine Vorlage verwenden, die Sprache auf der server-Seite oder Javascript auf der client-Seite. Durch den Einsatz von Ajax und client-side-code für die Anzeige der Daten und die Validierung, dass ich am Ende nur sehr wenig template-code. Das größte problem mit template-engines ist die intoduction von neuen code-Regeln und syntax. Ich sehe die Zukunft mit PHP, Jquery und Ajax und template-engines verlieren Ihren Reiz.