Heim >Backend-Entwicklung >PHP-Tutorial >Zweig - die beliebteste eigenständige PHP -Template -Engine
twig: Eine beliebte PHP -Template -Engine
Twig ist eine beliebte PHP -Template -Engine, die von Senssio Labs entwickelt wurde. Twig wirkt sowohl auf Frontend als auch auf das Backend des Projekts und kann aus zwei Perspektiven angesehen werden: Twig für Vorlagendesigner und Zweig für Entwickler. Twig verwendet ein Kernobjekt mit dem Namen Environment
, um Konfigurationen, Erweiterungen und Ladevorlagen aus einem Dateisystem oder anderswo zu laden. Twig unterstützt Nested Templates (Blöcke), vermeidet die Duplikation von Elementen in Vorlagen und kann kompilierte Vorlagen mit kompilierten Vorlagen durchführen, um nachfolgende Anforderungen zu beschleunigen. Twig unterstützt bedingte Aussagen, Schleifen und Filter, um die Anzeige von Informationen in Vorlagen zu steuern, und bietet Debugging -Funktionen, um alle Informationen zu Variablen für Vorlagen abzugeben.
Dieser Artikel wurde von Wern Ancheta überprüft. Vielen Dank an alle Peer -Rezensenten von SitePoint, um SitePoint -Inhalte in den Besten zu bringen!
Twig ist die Template -Engine von PHP. Aber ist PHP selbst nicht eine Template -Engine? Ja, nicht! Obwohl PHP ursprünglich als Template -Engine verwendet wurde, entwickelte es sich nicht, und obwohl wir sie immer noch als Vorlagenmotor verwenden können, welche Version von "Hello World" bevorzugen Sie:
<code class="language-php"><?php echo "<p> Hello " . $name . "</p>"; ?></code>
oder
<code class="language-twig"><p>Hello {{ name }}</p></code>
PHP ist eine ausführliche Sprache, die beim Versuch, HTML -Inhalt auszugeben, verstärkt wird. Moderne Vorlagensysteme beseitigen die Teilwiedergabe und verleihen ihm einiges an Funktionen. Funktionen wie Sicherheits- und Debugging -Funktionen sind das Rückgrat moderner Vorlagenmotoren. Heute werden wir uns auf den Zweig konzentrieren.
twig ist eine Template -Engine, die von Senssio Labs (der Entwicklungsfirma von Blackfire und Symfony) erstellt wurde. Schauen wir uns die Hauptvorteile an und wie Sie es in Ihrem Projekt verwenden.
Installation
Es gibt zwei Möglichkeiten, Twig zu installieren. Wir können die auf ihrer Website verfügbaren TAR -Pakete oder Komponisten wie wir verwenden.
<code class="language-bash">composer require twig/twig</code>
Wir gehen davon aus, dass Sie eine Umgebung ausführen, in der PHP eingerichtet ist und der Komponist global installiert wird. Der beste Weg ist, Homestead verbessert zu verwenden. Sie können es in 5 Minuten auf der gleichen Maschine, die wir verwenden, beginnen, damit wir auf derselben Seite sein können. Wenn Sie mehr über die PHP -Umgebung erfahren möchten, haben wir hier ein hervorragendes bezahltes Buch zum Kauf.
Wir müssen etwas klären, bevor wir weitermachen können. Als Template -Engine wirkt Twig sowohl auf Frontend als auch im Backend des Projekts. So können wir den Zweig aus zwei verschiedenen Perspektiven betrachten: Zweig für Vorlagendesigner und Zweig für Entwickler. Einerseits bereiten wir alle Daten vor, die wir brauchen.
Grundnutzung
Um die grundlegende Verwendung von Zweig zu veranschaulichen, erstellen wir ein einfaches Projekt. Zunächst müssen wir den Zweig starten. Erstellen wir eine bootstrap.php
Datei mit dem folgenden Inhalt:
<code class="language-php"><?php echo "<p> Hello " . $name . "</p>"; ?></code>
twig verwendet ein Kernobjekt namens Environment
. Instanzen dieses Typs werden zum Speichern von Konfigurationen, Erweiterungen und Ladevorlagen von Dateisystemen oder anderen Standorten verwendet. Nach unseren Twig -Instanzstiefeln können wir eine index.php
-Datei erstellen, in der einige Daten geladen und an die Twig -Vorlage übergeben werden.
<code class="language-twig"><p>Hello {{ name }}</p></code>
Dies ist ein einfaches Beispiel; Anschließend verwenden wir die render()
-Methode, die den Vorlagennamen (dies ist eine Datei im Vorlagenordner, die wir zuvor definiert haben) und die Daten, die wir an die Vorlage übergeben möchten, akzeptiert. Um unser Beispiel zu vervollständigen, gehen wir zu unserem /templates
-Fordner und erstellen Sie eine index.html
-Datei. Schauen wir uns zunächst die Vorlage selbst an.
<code class="language-bash">composer require twig/twig</code>
Öffnen Sie index.php
in Ihrem Browser (besuchen Sie localhost oder homestead.app, je nachdem, wie Sie den Host und den Server einrichten), sollte jetzt den folgenden Bildschirm anzeigen:
Aber gehen wir zurück und schauen uns unseren Vorlagencode genauer an. Es gibt zwei Arten von Separatoren: {{ ... }}
wird verwendet, um die Ergebnisse eines Ausdrucks oder einer Operation zu drucken, während {% ... %}
zum Ausführen von Anweisungen wie bedingten Anweisungen und Schleifen verwendet wird. Diese Grenzwerte sind die Hauptsprachstruktur des Zweigs, mit der Twig die Vorlage "informiert", die das Zweigelement rendern muss.
(Der folgende Inhalt ähnelt dem Originaltext, aber einige Anweisungen und Absätze wurden vorgenommen, und die Bildposition bleibt unverändert)
Layout
Um die duplizierenden Elemente (wie Header und Fußzeilen) in Vorlagen zu vermeiden, ermöglicht der Zweig uns, Vorlagen in Vorlagen zu nisten, die als Blöcke bezeichnet werden. Um dies zu veranschaulichen, trennen wir den tatsächlichen Inhalt von der HTML -Definition im Beispiel. Erstellen wir eine neue HTML -Datei und nennen Sie sie layout.html
:
<code class="language-php"><?php // 加载我们的自动加载器 require_once __DIR__.'/vendor/autoload.php'; // 指定我们的Twig模板位置 $loader = new Twig_Loader_Filesystem(__DIR__.'/templates'); // 实例化我们的Twig $twig = new Twig_Environment($loader);</code>
Wir haben einen Block namens content
erstellt. Wir meinen, dass jede Vorlage, die sich von layout.html
erstreckt, einen content
-Block implementieren kann, der an diesem Ort angezeigt wird. Auf diese Weise können wir das Layout mehrmals wiederverwenden, ohne es neu zu schreiben. In diesem Fall sieht die Datei index.html
jetzt so aus:
<code class="language-php"><?php require_once __DIR__.'/bootstrap.php'; // 创建产品列表 $products = [ [ 'name' => 'Notebook', 'description' => 'Core i7', 'value' => 800.00, 'date_register' => '2017-06-22', ], [ 'name' => 'Mouse', 'description' => 'Razer', 'value' => 125.00, 'date_register' => '2017-10-25', ], [ 'name' => 'Keyboard', 'description' => 'Mechanical Keyboard', 'value' => 250.00, 'date_register' => '2017-06-23', ], ]; // 渲染我们的视图 echo $twig->render('index.html', ['products' => $products] );</code>
Zweig ermöglicht es uns auch, nur einzelne Blöcke zu rendern. Dazu müssen wir zuerst die Vorlage laden und dann den Block rendern.
<code class="language-html"><!DOCTYPE html> <meta charset="UTF-8"> <title>Twig Example</title> <table> border="1" style="width: 80%;"> <thead> <tr> <td>Product</td> <td>Description</td> <td>Value</td> <td>Date</td> </tr> </thead> <tbody> {% for product in products %} <tr> <td>{{ product.name }}</td> <td>{{ product.description }}</td> <td>{{ product.value }}</td> <td>{{ product.date_register|date("m/d/Y") }}</td> </tr> {% endfor %} </tbody> </table> </code>
Zu diesem Zeitpunkt haben wir immer noch die gleiche Seite, aber wir reduzieren ihre Komplexität, indem wir die Kontextblöcke entkoppeln.
cache
Environment
Objekte können nicht nur zum Laden von Vorlagen verwendet werden. Wenn wir mit der Option cache
des zugehörigen Verzeichnisses bestehen, kann der Twig die kompilierte Vorlage zwischengespeichert und so vermeiden, dass die Vorlage in nachfolgenden Anforderungen analysiert wird. Die kompilierte Vorlage wird in dem von uns angegebenen Verzeichnis gespeichert. Beachten Sie, dass dies der Cache für die kompilierten Vorlagen ist, nicht der Cache für die ausgewerteten Vorlagen. Dies bedeutet, dass Twig die Vorlagendatei analysiert, kompiliert und speichert. Alle nachfolgenden Anfragen erfordern noch Bewertungsvorlagen, aber der erste Schritt ist bereits für Sie durchgeführt. Lassen Sie uns die Vorlage im Beispiel zwischenspeichern, indem wir die Datei bootstrap.php
bearbeiten:
<code class="language-php"><?php echo "<p> Hello " . $name . "</p>"; ?></code>
(Der folgende Inhalt ähnelt dem Originaltext, aber einige Anweisungen und Absätze wurden vorgenommen, und die Bildposition bleibt unverändert)
Zyklus
In unserem Beispiel haben wir gesehen, wie man mit Zweig schaufelt. Grundsätzlich verwenden wir das for
-Tag und weisen jedem Element im angegebenen Array einen Alias zu. In diesem Fall weisen wir dem products
-Array einen Alias zu. Danach können wir den product
-Operator verwenden, um auf alle Eigenschaften in jedem Array -Element zuzugreifen. Wir verwenden das .
-Tag, um das Ende der Schleife anzuzeigen. Wir können auch Nummern oder Buchstaben mit dem endfor
-Operator durchlaufen. Wie unten gezeigt: ..
<code class="language-twig"><p>Hello {{ name }}</p></code>oder Brief:
<code class="language-bash">composer require twig/twig</code>Dieser Operator ist nur der Syntaxzucker der
-Funktion und funktioniert genauso wie die native PHP range
-Funktion. Eine ebenso nützliche Option besteht darin, der Schleife Bedingungen hinzuzufügen. Mit Bedingungen können wir die Elemente zum ITERATE filtern. Angenommen, wir wollen alle Produkte mit einem Wert von weniger als 250 iterieren: range
<code class="language-php"><?php // 加载我们的自动加载器 require_once __DIR__.'/vendor/autoload.php'; // 指定我们的Twig模板位置 $loader = new Twig_Loader_Filesystem(__DIR__.'/templates'); // 实例化我们的Twig $twig = new Twig_Environment($loader);</code>
bedingte Anweisung
twig liefert auch bedingte Aussagen in Form von, if
, elseif
und if not
-Tags. Genau wie in jeder Programmiersprache können wir diese Tags verwenden, um Bedingungen in Vorlagen zu filtern. Nehmen wir in unserem Beispiel an, wir möchten nur Produkte mit einem Wert über 500 anzeigen: else
<code class="language-php"><?php require_once __DIR__.'/bootstrap.php'; // 创建产品列表 $products = [ [ 'name' => 'Notebook', 'description' => 'Core i7', 'value' => 800.00, 'date_register' => '2017-06-22', ], [ 'name' => 'Mouse', 'description' => 'Razer', 'value' => 125.00, 'date_register' => '2017-10-25', ], [ 'name' => 'Keyboard', 'description' => 'Mechanical Keyboard', 'value' => 250.00, 'date_register' => '2017-06-23', ], ]; // 渲染我们的视图 echo $twig->render('index.html', ['products' => $products] );</code>
filter
Filter ermöglichen es uns, die an die Vorlage übergebenen Informationen und das Format der angezeigten Informationen zu filtern. Schauen wir uns einige der am häufigsten verwendeten und wichtigen Filter an. Eine vollständige Liste der Zweigfilter finden Sie hier.Datum und
date_modify
filteren Format das Datum zum angegebenen Format. Wie wir im Beispiel sehen: date
<code class="language-html"><!DOCTYPE html> <meta charset="UTF-8"> <title>Twig Example</title> <table> border="1" style="width: 80%;"> <thead> <tr> <td>Product</td> <td>Description</td> <td>Value</td> <td>Date</td> </tr> </thead> <tbody> {% for product in products %} <tr> <td>{{ product.name }}</td> <td>{{ product.description }}</td> <td>{{ product.value }}</td> <td>{{ product.date_register|date("m/d/Y") }}</td> </tr> {% endfor %} </tbody> </table> </code>Wir zeigen Termine im Format von Monat/Tag/Jahr an. Zusätzlich zum
-Filter können wir den date
-Filter verwenden, um das Datum mit dem date_modify
-Filter zu ändern. Wenn wir beispielsweise einen Tag zu einem Datum hinzufügen möchten, können wir Folgendes verwenden:
<code class="language-html"><!DOCTYPE html> <meta charset="UTF-8"> <title>Tutorial Example</title> {% block content %} {% endblock %} </code>
format
formatieren Sie die angegebene Zeichenfolge, indem Sie alle Platzhalter ersetzen. Zum Beispiel:
<code class="language-html">{% extends "layout.html" %} {% block content %} <table> border="1" style="width: 80%;"> <thead> <tr> <td>Product</td> <td>Description</td> <td>Value</td> <td>Date</td> </tr> </thead> <tbody> {% for product in products %} <tr> <td>{{ product.name }}</td> <td>{{ product.description }}</td> <td>{{ product.value }}</td> <td>{{ product.date_register|date("m/d/Y") }}</td> </tr> {% endfor %} </tbody> </table> {% endblock %}</code>
striptags
striptags
Der Filter entfernt SGML/XML -Tags und ersetzt benachbarte Räume durch Leerzeichen:
<code class="language-php"><?php echo "<p> Hello " . $name . "</p>"; ?></code>
escape
escape
ist einer der wichtigsten Filter. Es filtert die Zeichenfolge, die sicher in die endgültige Ausgabe einfügt. Standardmäßig verwendet es die HTML -Escape -Richtlinie, also
<code class="language-twig"><p>Hello {{ name }}</p></code>
äquivalent zu
<code class="language-bash">composer require twig/twig</code>
js
, css
, url
, html_attr
und
debugg
dump()
Schauen wir uns schließlich einen Blick auf das Debuggen an. Manchmal müssen wir auf alle Informationen der Vorlagenvariablen zugreifen. Dazu hat Twig eine Twig_Extension_Debug
-Funktion. Diese Funktion ist standardmäßig nicht verfügbar. Beim Erstellen einer Twig -Umgebung müssen wir die Erweiterung
<code class="language-php"><?php // 加载我们的自动加载器 require_once __DIR__.'/vendor/autoload.php'; // 指定我们的Twig模板位置 $loader = new Twig_Loader_Filesystem(__DIR__.'/templates'); // 实例化我们的Twig $twig = new Twig_Environment($loader);</code>
dump()
Dieser Schritt ist notwendig, damit wir nicht versehentlich Debug -Informationen auf den Produktionsserver auslaufen. Sobald die Konfiguration abgeschlossen ist, verwenden wir einfach die Funktion
<code class="language-php"><?php require_once __DIR__.'/bootstrap.php'; // 创建产品列表 $products = [ [ 'name' => 'Notebook', 'description' => 'Core i7', 'value' => 800.00, 'date_register' => '2017-06-22', ], [ 'name' => 'Mouse', 'description' => 'Razer', 'value' => 125.00, 'date_register' => '2017-10-25', ], [ 'name' => 'Keyboard', 'description' => 'Mechanical Keyboard', 'value' => 250.00, 'date_register' => '2017-06-23', ], ]; // 渲染我们的视图 echo $twig->render('index.html', ['products' => $products] );</code>
Schlussfolgerung
Ich hoffe, dieser Artikel bietet Ihnen eine solide Grundlage für Twig -Grundlagen und startet Ihr Projekt sofort! Wenn Sie einen tieferen Blick auf den Twig sehen möchten, bietet die offizielle Website eine sehr gute Dokumentation und Referenzen, die Sie überprüfen können. Verwenden Sie die Template Engine? Was denkst du über Zweig? Würden Sie es mit beliebten Alternativen wie Blade oder Smarty vergleichen?
(Der folgende Inhalt ist FAQ, der ursprüngliche Text wurde hier enthalten, hier weggelassen)
Das obige ist der detaillierte Inhalt vonZweig - die beliebteste eigenständige PHP -Template -Engine. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!