templating

___ qstnhdr ___ wie kann man Smarty besser mit PHP verwenden? ___ qstntxt ___

Ich habe festgestellt, dass mit Smarty mit PHP manchmal zusätzliche Zeit für

verwendet werden muss

1) mit ganz anderer Syntax als PHP selbst
2) müssen kleine Fälle überprüfen, weil die Dokumentation keine feineren Details gibt, wie für "escape"

Ссылка

es heißt nicht escape: "quotes" ist nur für doppelte Anführungszeichen oder auch für einfache Anführungszeichen, also müssen Sie Code schreiben, um es zu testen. Auch für den Fall der Flucht: "Javascript" - kann nicht genau sagen, was und wie es entkommen ist.

3) für etwas kompliziertes, müssen Hilfsfunktionen oder Modifikatoren schreiben, so dass es eine Erstellung neuer Dateien benötigt und am Ende wieder in PHP getan wird.

Übrigens, bietet die Verwendung von Smarty eine gute Beschleunigung gegenüber PHP allein? Danke.

    
___ answer874972 ___

Erstens ist PHP eine Vorlagensprache. Denken Sie daran, wenn Sie über ein Vorlagensystem für Ihre PHP-basierten Webanwendungen sprechen.

Das einzige "echte" Argument, das ich jemals für die Verwendung von Templating-Engines gehört habe, ist, dass sie eine einfachere Sprache für die Template-Manipulation bieten, was sehr praktisch ist, wenn Sie Template-Designer haben, die PHP nicht kennen. t vertrauen, um PHP sinnvoll zu lernen.

In Bezug auf diese Argumente würde ich argumentieren, dass, wenn Ihre Template-Designer nicht in der Lage sind, genug PHP für das Template-Design zu lernen, Sie wahrscheinlich neue Template-Designer finden sollten. Darüber hinaus bietet PHP selbst eine andere Syntax für Steueranweisungen, die Sie in einer Vorlage oder im Code verwenden können. Zum Beispiel:

%Vor%

VS:

%Vor%

Ich persönlich glaube, dass Templating-Engines in PHP entstanden sind, weil:

  1. So machen es andere Sprachen
  2. Bessere PHP-Programmierer haben erkannt, dass sie einen Weg brauchen, um Trennung zwischen Präsentations- und Anwendungslogik zu erzwingen, und Vorlagen waren eine einfache Möglichkeit, dies zu tun.

Der erste Grund ist nur ein bisschen albern. Der zweite Grund kann mit ein wenig Selbstkontrolle und sogar einem rudimentären Verständnis der Notwendigkeit der Trennung von Schichten in einer Anwendung überwunden werden. Das MVC-Entwurfsmuster ist eine Möglichkeit, dieses Problem anzugehen. Was die Selbstkontrolle anbelangt, ist meine Regel, dass nur notwendige Schleifen und if-Anweisungen verwendet werden, sowie Funktionen, die die Ausgabe für den Bildschirm filtern, escape, formatieren.

Nachdem ich Smarty ausgiebig benutzt habe, kann ich ehrlich sagen, dass es mir immer mehr Hürden geboten hat, um darüber hinweg zu kommen als Lösungen. Der Wechsel zu PHP-basierten Vorlagen hat tatsächlich die Entwicklungszeit für Vorlagen und Code verringert.

    
___ answer874984 ___

Ich mag keine Template-Engine. Ich finde sie sehr verlustbehaftet und ressourcenintensiv für PHP.

Mit MediaWiki, um Version 1.6.x, haben wir Smarty standardmäßig deaktiviert und verwenden einfach das PHP Template-Template mit einer großen Verbesserung der Performance.

Ich habe herausgefunden, dass das meiste, was Leute mit einem Vorlagensystem machen wollen (Links hinzufügen, Farben ändern, Text entfernen oder Abschnitte der Seite), besser mit einem einfachen System von Ereignis-Hooks erledigt wird.

Laconica, die offene Microblogging-Plattform, tut standardmäßig keine Vorlagen. Wir haben ein Plugin für Leute, die verrückt nach Templating sind.

    
___ answer874956 ___

Ich mag Template-Engines und denke, dass sie verwendet werden sollten, aber in dem speziellen Fall von Smarty denke ich, dass es Zeitverschwendung ist, weil es keine wesentliche Verbesserung gegenüber PHP als Templating-Sprache ist:

  • Die neue Syntax basiert immer noch auf dem alten Konzept spezieller Tags, die an zufälligen Stellen im Dokument eingefügt werden.
  • Da Smarty die Syntax / Struktur von HTML nicht versteht, kann es Ihnen nicht helfen, gültiges / wohlgeformtes HTML zu erstellen. Smartys Tags verletzen die HTML-Syntax. Sobald Sie sie hinzugefügt haben, können Ihnen andere Standard-Tools nicht helfen.
  • Smartys Ausgabe ist wie in PHP standardmäßig unsicher (unescaped) und Sie müssen daran erinnern, %code% überall dort hinzuzufügen, wo Sie Daten in HTML ausgeben.

Es gibt eine bestimmte PHP-Vorlagen-Engine, in die ich mich verliebt habe, die all diese Probleme behebt: PHPTAL .

Es ist immer noch etwas Neues, das Sie lernen müssen, und es ist eine Abhängigkeit für Ihre Anwendung, aber ich denke, XSS und schlecht geformte Probleme gelöst zu haben, macht es die Mühe wert.

PHPTAL genau wie Smarty einmal in PHP kompiliert und zwischengespeichert wird, so ist die Performance vergleichbar mit Roh-PHP.

    
___ answer874960 ___

Smarty ist sicherlich eine der besten Template-Engines überhaupt. Meiner Erfahrung nach sind die Leute jedoch gut beraten, ihre Anwendungsfälle gründlicher zu untersuchen, bevor sie überhaupt eine Templating-Engine auf PHP verwenden.

Zunächst ist PHP selbst perfekt für Vorlagen. Die einzige Rechtfertigung für die Verwendung einer anderen Templating-Engine besteht darin, dass Sie nicht vertrauenswürdigen Benutzern das Erstellen oder Bearbeiten von Vorlagen erlauben, da sie alle Arten von Fehlern ausführen können. Wenn Ihr Projekt benutzerbearbeitbare Vorlagen enthält, verwenden Sie Smarty. Wenn nicht, bleibe bei PHP.

Wenn Ihr Problem die Trennung von Code und Layout ist, sollten Sie ein schlankes MVC-Ausführungsmodell implementieren. Oder, um es etwas herablassender zu sagen: Wenn Sie einen tieferen Logikcode in Ihrer Vorlage haben, ist es wahrscheinlich an der Zeit, etwas zu refaktorisieren.

Leistung ist eine andere Überlegung. Ja, das Rendern einer Smarty-Vorlage ist mit Kosten verbunden. Aber nachdem es fertig ist, sollte die Ausgabe zwischengespeichert werden, was zu verbesserten Ausführungszeiten führt. Gleiches gilt für PHP-Vorlagen. Mit PHP können Sie alle Arten von granularen Caching-Modellen durch Verwendung seiner Ausgabepuffer implementieren. Aber hüte dich vor verfrühter Optimierung: Mach das erst, nachdem du den Code fertiggestellt hast und identifiziere, was die eigentlichen Engpässe sind!

Die größten Kosten bei der Verwendung von Smarty oder einer anderen Engine entstehen in Form von Entwicklerzeit. Es ist eine weitere Ebene der Komplexität und Sie werden sich unweigerlich in Situationen finden, in denen Sie die Engine dazu bringen müssen, das zu tun, was Sie in reinem PHP die ganze Zeit erreicht haben könnten.

    
___ answer874912 ___

Die Verwendung von Smarty als Templating-Engine wird wahrscheinlich nicht so performant sein, wie es nicht verwendet wird, da es sich um eine zusätzliche Softwareschicht handelt, d. h. eine Templating-Sprache über einer, Erm, einer anderen Templating-Sprache. Auf der anderen Seite, wenn Sie die Caching-Funktion richtig verwenden, können Sie insgesamt Leistungsgewinne realisieren.

Smarty-Vorlagen werden vor der Ausgabe an den Browser vorkompiliert. Dazu werden temporäre Dateien auf die Festplatte geschrieben. Dieser Schritt bestraft sicherlich die Leistung, zumindest ein wenig.

Wenn Sie sicher sind, dass Sie Implementierung und Präsentation getrennt halten können und kein echtes Interesse am serverseitigen Caching haben, sollten Sie wahrscheinlich nur reines PHP-Templating verwenden. Einige MVC-Frameworks wie das Zend Framework haben ihre eigenen PHP-ähnlichen Template-Systeme.

Auf der anderen Seite ist Smarty ein anständiger Weg, um eine saubere Trennung von Präsentation und Implementierung zu erzwingen, besonders wenn unklar ist, was wo hingehört. Es könnte helfen, Sie zu disziplinieren, um diese notwendige Trennung durchzusetzen.

Das heißt, ich benutze Smarty in den meisten meiner PHP-Projekte, da es mich an Java-Server-Tag-Bibliotheken (JSTL) erinnert, an die ich sehr, sehr gewöhnt bin.

    
___ answer879198 ___

Vorteile

  • Kein PHP in Ihren HTML-Dateien (erlaubt sowohl die PHP- als auch HTML-Identifizierung)
  • Pipes {$ var | default: "Keine ausgewählt"} {$ var | urlencode}
  • Foreachelse: {foreach item = Zeile von = $ results} {$ row.name} & lt; br & gt; {foreachelse} Keine Ergebnisse {/ foreach}
  • bearbeitbare Webseiten / Seiten (nur mit CSS begrenzt)

Nachteile

  • Andere Sprachsyntax
  • Nicht immer offensichtlicher Code {"Y-m-d" | strftime: $ timestamp} {$ array | @var_dump}
  • Leichter Aufwand

Ich kann den "template" -Ansatz (mVc) sehr empfehlen, aber sowohl Smarty als auch reines PHP sind für die Aufgabe bereit.

    
___ answer874928 ___

Soweit ich weiß, ist Smarty eine der besten Template-Motoren in Sachen Geschwindigkeit. Vielleicht dauert es eine Weile, um sich daran zu gewöhnen. Aber wenn Sie nicht gerade an dem System arbeiten und die Menge an HTML- und Style-Dateien enorm ist, beschleunigt dies die Entwicklung erheblich.

Bei der Arbeit an meinem letzten Projekt wurde das Design ein paar Mal geändert, aber die Logik war die gleiche. Ich denke, das ist das beste Beispiel, wenn Smarty oder eine andere Template Engine viel hilft.

    
___ answer874943 ___

Persönlich benutze ich Blitz für Templating. Auf der Website behauptet der Autor, es sei die schnellste Templating-Engine und biete ein (voreingenommenes?) Diagramm über die Leistung zwischen verschiedenen Templating-Systemen für PHP. Ich habe Smarty selbst nicht verwendet, aber das könnte Ihnen Hinweise auf seine Leistung geben.

Ссылка

    
___ answer5011222 ___

Die Verwendung eines Smarty oder nicht ist mehr oder weniger eine philosophische Position.

Ich benutze es, obwohl ich nicht viel Funktionalität verwende. Auf diese Weise neigen Vorlagen dazu, sehr einfach zu sein. Übergeben Sie ein assoziatives Array mit Parametern, durchlaufen Sie seine Komponenten und fügen Sie die erforderlichen Elemente in die Ergebnisseite ein. Dies hält Vorlagen sauber und (hoffentlich) frei von Geschäftslogik.

Darüber hinaus ist die Erweiterung von Smarty ziemlich einfach.

Als Beispiel habe ich fetch () einen styles-Parameter hinzugefügt, um einen fetchUsingStyle () zu erhalten. Dadurch kann ich sehr einfach zwischen verschiedenen Layouts einer Site wechseln.

Außerdem sucht mein fetchUsingStyle () nach verschiedenen Orten nach einer Vorlage: Zuerst wird versucht, den aktuellen Stil zu finden. Wenn nicht gefunden, wird versucht, die Vorlage mit einem Standardstil zu laden. Zuletzt versucht es eine reine statische Dummy-Datei zu finden, einen Platzhalter für etwas, das später implementiert werden soll.

    
___ tag123php ___ PHP ist eine weit verbreitete, dynamische, objektorientierte und interpretierte Skriptsprache, die primär für die serverseitige Webentwicklung entwickelt wurde. ___ answer12800032 ___

Versuchen Sie, Smarty mit MVC-Muster wie Codeigniter zu verwenden, es ist besser als Kern-PHP

    
___ tag123smarty ___ Smarty ist eine Template-Engine für PHP. Es ermöglicht eine einfache Trennung von Anwendungslogik und Anzeigecode und vereinfacht die Wiederverwendung von Vorlagen. ___ tag123Template ___ Templating-Systeme bestehen in der Regel aus einer Template Engine, einer Content-Ressource und einer Template-Ressource. ___ answer3747087 ___

Warum sollten Sie eine Template-Engine verwenden, wenn Sie einfach Ihre HTML-Dateien verwenden und den PHP-Code dort einspeisen können, wo Sie ihn brauchen? das kannst du mit Psttt machen! Templating Engine für PHP

vollständiger Quellcode hier Ссылка

    
___ tag123templateengine ___ Eine Vorlagen-Engine ist eine Software, die zum Verarbeiten von Vorlagen und Inhaltsinformationen zum Erstellen von Ausgabedokumenten entwickelt wurde. ___
1
Antwort

node.js - Schweißen mit Express?

Ich bin neu bei node.js und versuche, weld zu verwenden, um Vorlagen auf der Serverseite zu rendern und express zu verwenden als der Router. Die Beispiele für node.js zeigen jedoch nicht, dass sie den Inhalt bereitstellen, und es ist unklar...
28.09.2011, 07:13
3
Antworten

Jade - Zeilenumbrüche in der HTML-Ausgabe steuern

Ich habe ein einfaches Suchformular, das ich mit Jade implementieren möchte. %Vor% Die Ausgabe wird wie folgt dargestellt: %Vor% Dies ist perfekt, außer dass der Zeilenumbruch ein Leerzeichen zwischen meiner Schaltfläche und der Suchscha...
08.08.2012, 14:11
4
Antworten

Elegant foreach - sonst Konstrukt in Razor

Viele Template-Engines haben eine spezielle Syntax, die eine Kombination aus foreach und else ist. Grundsätzlich wird die else -Klausel ausgeführt, wenn die foreach -Schleife keine Iterationen hat. Dies kann nützlich sein, wenn Sie e...
19.10.2011, 10:48
5
Antworten

Zweig: Fügen Sie externen Code aus einer SVG-Datei ein

Ist es möglich, Code aus einer SVG-Datei direkt in eine Zweigvorlage einzufügen? Etwas wie: %Vor% das wird ergeben: %Vor%     
08.07.2016, 07:38
1
Antwort

Java Generics, eng begrenzter Parametertyp

Ich möchte eine Methode haben, die eine Unterschrift hat wie     %Code% so dass T2 ein T1 und / oder T1 ein T2 ist. Ich will nicht, dass T1 und T2 beide ein T sind, aber keiner der beiden ist. Ich wünsche, dass der am meisten erlaubte Typ oben d...
10.12.2013, 18:59
2
Antworten

Vorlagen-Engine für Ruby und Javascript

Wir bauen eine Webseite mit Hashtag-Navigation. Es gibt viele Daten, die als JSON kommen und wir verwenden clientseitige Vorlagen (jQuery), um sie zu rendern. Was sind die Optionen für wiederverwendbare Vorlagen auf der Client- und der Serversei...
29.07.2011, 13:15
3
Antworten

Natural Templating .html (wie Thymeleaf) für Node.js

Gibt es Natural Templating für Node.js ? Natürliche Templating (wie Thymeleaf Vorlagen-Engine ) ist, wenn Vorlage Seite oder ihr Teil kann perfekt von einem Browser als Prototyp angezeigt werden, ohne überhaupt ausgeführt werden. Das heißt,...
27.03.2013, 05:43
11
Antworten

wie kann man Smarty besser mit PHP verwenden?

Ich habe festgestellt, dass mit Smarty mit PHP manchmal zusätzliche Zeit für verwendet werden muss 1) mit ganz anderer Syntax als PHP selbst 2) müssen kleine Fälle überprüfen, weil die Dokumentation keine feineren Details gibt, wie für "esca...
17.05.2009, 16:17