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:
<?php echo "<p> Hello " . $name . "</p>"; ?>
oder
<p>Hello {{ name }}</p>
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.
composer require twig/twig
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:
<?php echo "<p> Hello " . $name . "</p>"; ?>
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.
<p>Hello {{ name }}</p>
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.
composer require twig/twig
?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
:
<?php // 加載我們的自動(dòng)加載器 require_once __DIR__.'/vendor/autoload.php'; // 指定我們的Twig模板位置 $loader = new Twig_Loader_Filesystem(__DIR__.'/templates'); // 實(shí)例化我們的Twig $twig = new Twig_Environment($loader);
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:
<?php require_once __DIR__.'/bootstrap.php'; // 創(chuàng)建產(chǎn)品列表 $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] );
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.
<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Twig Example</title> </head> <body> <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> </body> </html>
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:
<?php echo "<p> Hello " . $name . "</p>"; ?>
(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: ..
<p>Hello {{ name }}</p>oder Brief:
composer require twig/twigDieser 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
<?php // 加載我們的自動(dòng)加載器 require_once __DIR__.'/vendor/autoload.php'; // 指定我們的Twig模板位置 $loader = new Twig_Loader_Filesystem(__DIR__.'/templates'); // 實(shí)例化我們的Twig $twig = new Twig_Environment($loader);
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
<?php require_once __DIR__.'/bootstrap.php'; // 創(chuàng)建產(chǎn)品列表 $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] );
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
<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Twig Example</title> </head> <body> <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> </body> </html>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:
<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <title>Tutorial Example</title> </head> <body> {% block content %} {% endblock %} </body> </html>
format
formatieren Sie die angegebene Zeichenfolge, indem Sie alle Platzhalter ersetzen. Zum Beispiel:
{% 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 %}
striptags
striptags
Der Filter entfernt SGML/XML -Tags und ersetzt benachbarte R?ume durch Leerzeichen:
<?php echo "<p> Hello " . $name . "</p>"; ?>
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
<p>Hello {{ name }}</p>
?quivalent zu
composer require twig/twig
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
<?php // 加載我們的自動(dòng)加載器 require_once __DIR__.'/vendor/autoload.php'; // 指定我們的Twig模板位置 $loader = new Twig_Loader_Filesystem(__DIR__.'/templates'); // 實(shí)例化我們的Twig $twig = new Twig_Environment($loader);
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
<?php require_once __DIR__.'/bootstrap.php'; // 創(chuàng)建產(chǎn)品列表 $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] );
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!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

ToversionAPHP-basiertApieffektiv, useUrl-basiertversionsforclarityAndaseFrouting, separateversionedCodetoAvoidConflicts, DeprecateoldversionswithClearcommunication, und considercustomheadsonlywaNno.

TosecurelyHandleAuthenticationAuthorizationInphp, folge theSteps: 1.Alwayshashpasswordswithpassword_hash () und password_verify (), usePreeParedStatementStopreventsQlinjapitca und StoreuserDatain $ _SessionArtelogin.2.ImplementscaChescescesc

ProzeduralandObject-orientedProgramming (OOP) inPhpdifferS sisideftribitionInstructure, Wiederverwendbarkeit und datahandling.1.ProceduralProgrammingusSfunctions-organisierte Folgesequentiell, optableForsmallscripts.

Phpdoesnothaveabuilt-inWeakmapbutoffersWeakreferenceForsimilarFunction.1.WeakreferenceAllowsholdingReferences WithoutPreventingGAGECollection

Um Datei -Uploads in PHP sicher zu verarbeiten, besteht der Kern darin, Dateitypen zu überprüfen, Dateien umzubenennen und die Berechtigungen zu beschr?nken. 1. Verwenden Sie Finfo_File (), um den realen MIME -Typ zu überprüfen, und nur bestimmte Typen wie Bild/JPEG sind zul?ssig. 2. Verwenden Sie Uniqid (), um zuf?llige Dateinamen zu generieren und sie im Root-Verzeichnis ohne Web zu speichern. 3.. Begrenzen Sie die Dateigr??e durch Php.ini- und HTML -Formulare und setzen Sie die Verzeichnisberechtigungen auf 0755; 4. Verwenden Sie Clamav, um Malware zu scannen, um die Sicherheit zu verbessern. Diese Schritte verhindern effektiv Sicherheitslücken und stellen sicher, dass der Upload -Prozess des Datei -Uploads sicher und zuverl?ssig ist.

Ja, PHP kann mit NoSQL -Datenbanken wie MongoDB und Redis durch bestimmte Erweiterungen oder Bibliotheken interagieren. Verwenden Sie zun?chst den MongoDBPHP -Treiber (installiert über PECL oder Composer), um Client -Instanzen zu erstellen und Datenbanken und Sammlungen zu betreiben, wobei Sie Insertion, Abfrage, Aggregation und andere Vorg?nge unterstützen. Zweitens verwenden Sie die Predis Library oder PHPREDIS-Erweiterung, um eine Verbindung zu Redis herzustellen, Schlüsselwerteinstellungen und -akquisitionen durchzuführen und PHPREDIS für Hochleistungsszenarien zu empfehlen, w?hrend Predis für die schnelle Bereitstellung bequem ist. Beide sind für Produktionsumgebungen geeignet und gut dokumentiert.

In PHP ist der Hauptunterschied zwischen == und == die Strenge der Typprüfung. == Die Konvertierung des Typs wird vor dem Vergleich durchgeführt, beispielsweise 5 == "5" gibt true zurück und === fordert an, dass der Wert und der Typ gleich sind, bevor True zurückgegeben wird, z. B. 5 === "5" gibt false zurück. In den Nutzungsszenarien ist === sicherer und sollte zuerst verwendet werden, und == wird nur verwendet, wenn die Typumwandlung erforderlich ist.

Die Methoden zur Verwendung grundlegender mathematischer Operationen in PHP sind wie folgt: 1. Additionszeichen unterstützen Ganzfaktoren und Floating-Punkt-Zahlen und k?nnen auch für Variablen verwendet werden. String -Nummern werden automatisch konvertiert, aber nicht für Abh?ngigkeiten empfohlen. 2. Subtraktionszeichen verwenden - Zeichen, Variablen sind gleich, und die Typumwandlung ist ebenfalls anwendbar. 3. Multiplikationszeichen verwenden * Zeichen, die für Zahlen und ?hnliche Zeichenfolgen geeignet sind; 4. Division verwendet / Zeichen, die vermeiden müssen, durch Null zu dividieren, und beachten Sie, dass das Ergebnis m?glicherweise schwimmende Punktzahlen sein kann. 5. Die Modulzeichen k?nnen verwendet werden, um ungerade und sogar Zahlen zu beurteilen, und wenn negative Zahlen verarbeitet werden, stimmen die Restzeichen mit der Dividende überein. Der Schlüssel zur korrekten Verwendung dieser Operatoren liegt darin, sicherzustellen, dass die Datentypen klar sind und die Grenzsituation gut behandelt wird.
