Twig: enjin templat php popular
Twig adalah enjin templat PHP yang popular yang dibangunkan oleh Sensio Labs. Twig bertindak pada kedua -dua frontend dan backend projek, dan boleh dilihat dari dua perspektif: ranting untuk pereka templat dan ranting untuk pemaju. Twig menggunakan objek teras bernama untuk menyimpan konfigurasi, sambungan, dan templat beban dari sistem fail atau di tempat lain. Twig menyokong templat bersarang (blok), mengelakkan pertindihan unsur -unsur dalam templat, dan boleh disusun templat untuk mempercepatkan permintaan berikutnya. Twig menyokong penyata bersyarat, gelung dan penapis untuk mengawal paparan maklumat dalam templat dan menyediakan keupayaan debug untuk membuang semua maklumat mengenai pembolehubah templat. Environment
Artikel ini telah dikaji semula oleh Wern Ancheta. Terima kasih kepada semua pengulas rakan sebaya SitePoint untuk mendapatkan kandungan SitePoint untuk yang terbaik!
Twig adalah enjin templat php. Tetapi bukan PHP sendiri enjin templat? Ya, tidak! Walaupun PHP pada asalnya digunakan sebagai enjin templat, ia tidak berkembang, dan walaupun kita masih boleh menggunakannya sebagai enjin templat, versi "Hello World" yang anda suka:
<?php echo "<p> Hello " . $name . "</p>"; ?>atau
<p>Hello {{ name }}</p>php adalah bahasa verbose yang dikuatkan apabila cuba mengeluarkan kandungan HTML. Sistem templat moden akan menghilangkan kesilapan separa dan menambah sedikit fungsi kepadanya. Ciri -ciri seperti keupayaan keselamatan dan debug adalah tulang belakang enjin templat moden. Hari ini, kami akan memberi tumpuan kepada ranting.
Twig adalah enjin templat yang dicipta oleh Sensio Labs (syarikat pembangunan Blackfire dan Symfony). Mari kita lihat kelebihan utamanya dan cara menggunakannya dalam projek anda.
Pemasangan
Terdapat dua cara untuk memasang Twig. Kami boleh menggunakan pakej tar yang terdapat di laman web mereka, atau menggunakan komposer seperti yang telah kami lakukan.
composer require twig/twigKami menganggap anda menjalankan persekitaran di mana PHP ditubuhkan dan komposer dipasang di seluruh dunia. Cara terbaik ialah menggunakan Homestead bertambah baik - ia membolehkan anda mula menggunakannya dalam 5 minit pada mesin yang sama yang kami gunakan supaya kami boleh berada di halaman yang sama. Jika anda ingin mengetahui lebih lanjut mengenai persekitaran PHP, kami mempunyai buku berbayar yang sangat baik mengenai perkara ini untuk pembelian.
kita perlu menjelaskan sesuatu sebelum kita dapat meneruskan. Sebagai enjin templat, Twig bertindak pada kedua -dua frontend dan backend projek. Oleh itu, kita dapat melihat ranting dari dua perspektif yang berbeza: Twig untuk pereka templat dan ranting untuk pemaju. Di satu pihak, kami menyediakan semua data yang kami perlukan;
Penggunaan Asas
Untuk menggambarkan penggunaan asas Twig, mari buat projek mudah. Pertama, kita perlu ranting bootstrap. Mari buat fail Twig menggunakan objek teras bernama Ini adalah contoh mudah; Kemudian kami menggunakan kaedah Buka digunakan untuk mencetak hasil ekspresi atau operasi, manakala (Kandungan berikut adalah serupa dengan teks asal, tetapi beberapa pelarasan pernyataan dan bahagian perenggan telah dibuat, dan kedudukan imej tetap tidak berubah)
Layout
: . Kami bermaksud bahawa setiap templat yang meluas dari
Cache Objek (Kandungan berikut adalah serupa dengan teks asal, tetapi beberapa pelarasan pernyataan dan bahagian perenggan telah dibuat, dan kedudukan imej tetap tidak berubah) Cycle Dalam contoh kami, kami telah melihat bagaimana untuk gelung dengan ranting. Pada asasnya, kami menggunakan tag
, dan ia berfungsi dengan cara yang sama seperti fungsi PHP pernyataan bersyarat
, penapis
Format penapis tarikh ke format yang diberikan. Seperti yang kita lihat dalam contoh: , kita juga boleh menggunakan penapis
adalah salah satu penapis yang paling penting. Ia menapis rentetan untuk memasukkan dengan selamat ke dalam output akhir. Secara lalai, ia menggunakan dasar melarikan diri HTML, jadi
, Debug Akhirnya, mari kita lihat debugging. Kadang -kadang kita perlu mengakses semua maklumat pembolehubah templat. Untuk melakukan ini, Twig mempunyai fungsi Langkah ini diperlukan supaya kami tidak sengaja membocorkan maklumat debug pada pelayan pengeluaran. Sebaik sahaja konfigurasi selesai, kami hanya menggunakan fungsi Kesimpulan Saya harap artikel ini akan memberi anda asas yang kukuh untuk asas -asas ranting dan memulakan projek anda dengan segera! Jika anda ingin melihat lebih mendalam di Twig, laman web rasmi menyediakan dokumentasi dan rujukan yang sangat baik yang boleh anda periksa. Adakah anda menggunakan enjin templat? Apa pendapat anda tentang Twig? Adakah anda membandingkannya dengan alternatif popular seperti Blade atau Smarty? (kandungan berikut adalah FAQ, teks asal telah dimasukkan, ditinggalkan di sini) Atas ialah kandungan terperinci Twig - Enjin Templat PHP yang paling popular. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!bootstrap.php
dengan kandungan berikut: <?php echo "<p> Hello " . $name . "</p>"; ?>
Environment
. Contoh jenis ini digunakan untuk menyimpan konfigurasi, sambungan, dan templat beban dari sistem fail atau lokasi lain. Selepas Boots Contoh Twig kami, kami boleh meneruskan dan membuat fail index.php
di mana ia memuat beberapa data dan meluluskannya ke templat Twig. <p>Hello {{ name }}</p>
render()
, yang menerima nama templat (ini adalah fail dalam folder templat yang kami tentukan sebelumnya) dan data yang kami mahu lulus ke template. Untuk melengkapkan contoh kami, mari pergi ke folder /templates
kami dan buat fail index.html
. Pertama, mari kita lihat templat itu sendiri. composer require twig/twig
index.php
di penyemak imbas anda (lawati localhost atau homestead.app, bergantung pada cara anda menyediakan hos dan pelayan) kini harus memaparkan skrin berikut:
{{ ... }}
digunakan untuk melaksanakan pernyataan seperti pernyataan bersyarat dan gelung. Pembatas ini adalah struktur bahasa utama Twig, yang menggunakan Twig untuk "memaklumkan" templat yang mesti menjadikan elemen ranting. {% ... %}
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);
Kami mencipta blok yang dipanggil content
boleh melaksanakan blok layout.html
, yang akan dipaparkan di lokasi tersebut. Dengan cara ini, kita boleh menggunakan semula susun atur beberapa kali tanpa menulis semula. Dalam kes ini, fail content
kini kelihatan seperti ini: index.html
<?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] );
Twig juga membolehkan kita hanya memberi blok tunggal. Untuk melakukan ini, kita perlu memuatkan templat terlebih dahulu dan kemudian menjadikan blok tersebut. <!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>
Pada ketika ini, kami masih mempunyai halaman yang sama, tetapi kami mengurangkan kerumitannya dengan decoupling blok konteks. Environment
bukan sahaja boleh digunakan untuk memuatkan templat. Jika kita lulus menggunakan pilihan cache
direktori yang berkaitan, Twig akan cache templat yang disusun, dengan itu mengelakkan parsing templat dalam permintaan berikutnya. Templat yang disusun akan disimpan dalam direktori yang kami sediakan. Perhatikan bahawa ini adalah cache untuk templat yang disusun, bukan cache untuk templat yang dinilai. Ini bermakna Twig akan mengurai, menyusun dan menyimpan fail templat. Semua permintaan berikutnya masih memerlukan templat penilaian, tetapi langkah pertama sudah dilakukan untuk anda. Mari kita cache templat dalam contoh dengan mengedit fail bootstrap.php
: <?php echo "<p> Hello " . $name . "</p>"; ?>
for
dan memberikan alias kepada setiap elemen dalam array yang ditentukan. Dalam kes ini, kami memberikan alias kepada array products
. Selepas itu, kita boleh menggunakan pengendali product
untuk mengakses semua sifat dalam setiap elemen array. Kami menggunakan tag .
untuk menunjukkan hujung gelung. Kami juga boleh melengkung melalui nombor atau huruf menggunakan pengendali endfor
. Seperti yang ditunjukkan di bawah: ..
<p>Hello {{ name }}</p>
atau huruf: composer require twig/twig
Pengendali ini hanyalah gula sintaks fungsi range
asli. Pilihan yang sama berguna ialah menambah syarat ke gelung. Menggunakan keadaan, kita boleh menapis unsur -unsur untuk berulang. Katakan kami ingin melangkah ke atas semua produk dengan nilai kurang daripada 250: 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);
if
, elseif
dan if not
tag. Sama seperti dalam mana -mana bahasa pengaturcaraan, kita boleh menggunakan tag ini untuk menapis keadaan dalam templat. Katakan dalam contoh kami, kami ingin memaparkan hanya produk dengan nilai di atas 500: 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] );
date_modify
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>
Kami memaparkan tarikh dalam format bulan/hari/tahun. Sebagai tambahan kepada penapis date
untuk menukar tarikh menggunakan penapis date_modify
. Sebagai contoh, jika kita mahu menambah hari ke tarikh, kita boleh menggunakan yang berikut: <!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>Tutorial Example</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
Format rentetan yang diberikan dengan menggantikan semua ruang letak. Contohnya: format
{% 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
Penapis mengeluarkan tag SGML/XML dan menggantikan ruang bersebelahan dengan ruang: <?php echo "<p> Hello " . $name . "</p>"; ?>
escape
escape
<p>Hello {{ name }}</p>
bersamaan dengan composer require twig/twig
js
, css
, url
dan html_attr
dasar melarikan diri juga tersedia. Mereka adalah JavaScript, CSS, URI, dan HTML Atribute Context Escape Strings, masing -masing. dump()
. Fungsi ini tidak tersedia secara lalai. Semasa mewujudkan persekitaran ranting, kita perlu menambah lanjutan Twig_Extension_Debug
: <?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()
untuk membuang semua maklumat mengenai pembolehubah templat. <?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] );

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech
