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)

H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

In PHP k?nnen Sie quadratische Klammern oder lockige Klammern verwenden, um Zeichenfolgenspezifikationsspezifische Indexzeichen zu erhalten, aber quadratische Klammern werden empfohlen. Der Index startet von 0 und der Zugriff au?erhalb des Bereichs gibt einen Nullwert zurück und kann keinen Wert zugewiesen; MB_SUBSTR ist erforderlich, um Multi-Byte-Zeichen zu verarbeiten. Zum Beispiel: $ str = "Hallo"; echo $ str [0]; Ausgabe H; und chinesische Zeichen wie Mb_Substr ($ str, 1,1) müssen das richtige Ergebnis erzielen. In den tats?chlichen Anwendungen sollte die L?nge der Zeichenfolge vor dem Schleifen überprüft werden, dynamische Zeichenfolgen müssen für die Gültigkeit verifiziert werden, und mehrsprachige Projekte empfehlen, Multi-Byte-Sicherheitsfunktionen einheitlich zu verwenden.

Toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1.onwindows, download undInstallxampp, SelectComponents, Startapache und PlaceFilesinhtdocscs.2.Anternativ, manuellinstallphpfrfr

Tolearnphpeffectival, startbysettingupalocalerverenVironmentusexs -LikexamppandacodeeditorikevScode.1) InstallxamppForapache, MySQL und Php.SeacodeeditorForsyntaxSupport.3) testyourscludingveliktingveliktelaThbiliodble.Neclyble.NektFile
