検索
ホームページバックエンド開発PHPチュートリアルTwig-最も人気のあるスタンドアロンPHPテンプレートエンジン

Twig - the Most Popular Stand-Alone PHP Template Engine

Twig:人気のあるPHPテンプレートエンジン

Twigは、PHPコードを簡素化し、セキュリティやデバッグなどの機能を追加した人気のあるPHPテンプレートエンジンです。 Twigは、プロジェクトのFrontendとBackEndの両方で行動し、2つの視点から見ることができます:Twig for Template DesignersとTwig for Developers。 Twigは、Environmentという名前のコアオブジェクトを使用して、ファイルシステムまたはその他の場所から構成、拡張機能、ロードテンプレートを保存します。 Twigは、ネストされたテンプレート(ブロック)をサポートし、テンプレート内の要素の重複を回避し、コンパイルしたテンプレートをキャッシュして、後続の要求を高速化できます。 Twigは、条件付きステートメント、ループ、フィルターをサポートして、テンプレート内の情報の表示を制御し、テンプレート変数に関するすべての情報をダンプするデバッグ機能を提供します。

この記事は、Wern Anchetaによって査読されました。 SetePointコンテンツを最高に獲得してくれたSetePointのすべてのピアレビューアに感謝します!

TwigはPHPのテンプレートエンジンです。しかし、PHP自体はテンプレートエンジンではありませんか?はい、そうではありません! PHPはもともとテンプレートエンジンとして使用されていましたが、開発されませんでした。また、テンプレートエンジンとして使用することはできますが、どのバージョンの「Hello World」を好みますか:>

または

<?php echo "<p> Hello " . $name . "</p>"; ?>

PHPは、HTMLコンテンツを出力しようとするときに増幅される冗長言語です。最新のテンプレートシステムは、部分的な冗長性を排除し、それにかなりの機能を追加します。セキュリティやデバッグ機能などの機能は、最新のテンプレートエンジンのバックボーンです。今日は、小枝に焦点を当てます。

<p>Hello {{ name }}</p>

Twigは、Sensio Labs(BlackfireとSymfonyの開発会社)によって作成されたテンプレートエンジンです。その主な利点とプロジェクトでそれを使用する方法を見てみましょう。 Twig - the Most Popular Stand-Alone PHP Template Engine

インストール

小枝をインストールするには2つの方法があります。ウェブサイトで利用可能なタールパッケージを使用したり、行ってきたように作曲家を使用したりできます。

PHPがセットアップされ、作曲家がグローバルにインストールされている環境を実行していると仮定します。最良の方法は、Homesteadの改善を使用することです。これにより、使用しているのとまったく同じマシンで5分で使用を開始できるように、同じページに表示されます。 PHP環境について詳しく知りたい場合は、購入のためにこれについて優れた有料の本があります。
composer require twig/twig

続行する前に何かを明確にする必要があります。テンプレートエンジンとして、Twigはプロジェクトのフロントエンドとバックエンドの両方で動作します。したがって、Twigを2つの異なる視点から見ることができます。テンプレートデザイナー用の小枝と開発者向けの小枝です。一方で、必要なすべてのデータを準備します。

基本的な使用法

小枝の基本的な使用を説明するために、簡単なプロジェクトを作成しましょう。まず、小枝をブートストラップする必要があります。次のコンテンツを含むbootstrap.phpファイルを作成しましょう。

<?php echo "<p> Hello " . $name . "</p>"; ?>
Twigは

という名前のコアオブジェクトを使用します。このタイプのインスタンスは、ファイルシステムまたは他の場所からテンプレートを構成、拡張機能、ロードテンプレートの保存に使用します。 Twig Instance Bootsの後、先に進み、データを読み込んでTwigテンプレートに渡すEnvironmentファイルを作成できます。 index.php

<p>Hello {{ name }}</p>
これは、テンプレートで使用できるメカニカルキーボードなど、製品を含む配列を作成しています。次に、テンプレート名(これは以前に定義したテンプレートフォルダーのファイルです)とテンプレートに渡すデータを受け入れる

メソッドを使用します。例を完成させるには、render()フォルダーにアクセスして/templatesファイルを作成しましょう。まず、テンプレート自体を見てみましょう。 index.html

composer require twig/twig
ブラウザで

openindex.php(localhostまたはhomestead.appにアクセスして、ホストとサーバーのセットアップ方法に応じて)は次の画面を表示する必要があります。

Twig - the Most Popular Stand-Alone PHP Template Engine

しかし、戻ってテンプレートコードを詳しく見てみましょう。セパレータには2つのタイプがあります。

は、式または操作の結果を印刷するために使用され、{{ ... }}は条件付きステートメントやループなどのステートメントを実行するために使用されます。これらの区切り文字は、Twigの主要な言語構造であり、TwigはTwig要素をレンダリングする必要があるテンプレートを「通知」するために使用します。 {% ... %}

(以下の内容は元のテキストに似ていますが、いくつかのステートメントの調整と段落部門が作成されており、画像の位置は変更されません)

レイアウト

テンプレートで要素の重複(ヘッダーやフッターなど)を避けるために、Twigはテンプレートをテンプレートにネストすることができます。これはブロックと呼ばれます。これを説明するために、実際のコンテンツを例のHTML定義から分離しましょう。新しいHTMLファイルを作成して、名前を付けましょう

layout.html

<?php
// 加载我们的自动加载器
require_once __DIR__.'/vendor/autoload.php';

// 指定我们的Twig模板位置
$loader = new Twig_Loader_Filesystem(__DIR__.'/templates');

// 实例化我们的Twig
$twig = new Twig_Environment($loader);

というブロックを作成しました。 contentブロックを実装できることを意味します。これにより、レイアウトを書き直さずに複数回再利用できます。この場合、layout.htmlファイルは次のようになりました:content index.html

Twigでは、単一のブロックのみをレンダリングすることもできます。これを行うには、最初にテンプレートをロードしてからブロックをレンダリングする必要があります。
<?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] );

この時点では、

同じページがありますが、コンテキストブロックを切り離すことでその複雑さを減らします。
<!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>

キャッシュ

Environmentオブジェクトは、テンプレートのロードに使用するだけではありません。関連するディレクトリのcacheオプションを使用して渡すと、Twigはコンパイルされたテンプレートをキャッシュし、後続の要求でテンプレートを解析することを避けます。コンパイルされたテンプレートは、提供されるディレクトリに保存されます。これは、評価されたテンプレートのキャッシュではなく、コンパイルされたテンプレートのキャッシュであることに注意してください。これは、Twigがテンプレートファイルを解析、コンパイル、保存することを意味します。その後のすべてのリクエストは引き続き評価テンプレートを必要としますが、最初のステップはすでにあなたのために行われています。 bootstrap.phpファイルを編集して、例のテンプレートをキャッシュしましょう。

<?php echo "<p> Hello " . $name . "</p>"; ?>

(以下の内容は元のテキストに似ていますが、いくつかのステートメントの調整と段落部門が作成されており、画像の位置は変更されません)

サイクル

私たちの例では、小枝でループする方法を見てきました。基本的に、

タグを使用して、指定された配列内の各要素にエイリアスを割り当てます。この場合、エイリアスをfor配列に割り当てます。その後、各配列要素のすべてのプロパティにアクセスするためにproducts演算子を使用できます。ループの終了を示すためにproductタグを使用します。また、.オペレーターを使用して数字または文字をループすることもできます。以下に示すように:endfor ..

または文字:
<p>Hello {{ name }}</p>

この演算子は、

関数の単なる構文糖であり、ネイティブPHP
composer require twig/twig
関数と同じように機能します。同様に便利なオプションは、ループに条件を追加することです。条件を使用して、反復する要素をフィルタリングできます。 250未満の値ですべての製品を反復したいと仮定します:

range range

条件文
<?php
// 加载我们的自动加载器
require_once __DIR__.'/vendor/autoload.php';

// 指定我们的Twig模板位置
$loader = new Twig_Loader_Filesystem(__DIR__.'/templates');

// 实例化我们的Twig
$twig = new Twig_Environment($loader);

Twigは、

タグの形式の条件付きステートメントも提供します。他のプログラミング言語と同様に、これらのタグを使用してテンプレート内の条件をフィルタリングできます。この例では、500を超える値の製品のみを表示するとします。 if elseifif notフィルターelse

<?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] );
フィルターを使用すると、テンプレートに渡された情報と表示される情報の形式をフィルタリングできます。最も一般的に使用されている重要なフィルターのいくつかを見てみましょう。小枝フィルターの完全なリストはこちらをご覧ください。

日付と

フィルターは、日付を指定された形式にフォーマットします。例に示すように:

date_modify

月/日/年の形式で日付を表示します。

フィルターに加えて、dateフィルターを使用して、

フィルターを使用して日付を変更することもできます。たとえば、日付に1日を追加したい場合は、以下を使用できます。
<!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>

datedate_modify すべてのプレースホルダーを交換して、指定された文字列をフォーマットします。たとえば、

<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <meta charset="UTF-8">
        <title>Tutorial Example</title>
    </head>
    <body>
        {% block content %}
        {% endblock %}
    </body>
</html>

format

フィルターはSGML/XMLタグを削除し、隣接するスペースをスペースに置き換えます。
<?php echo "<p> Hello " . $name . "</p>"; ?>

escape

escapeは、最も重要なフィルターの1つです。文字列をフィルターして、最終出力に安全に挿入します。デフォルトでは、HTMLエスケープポリシーを使用しているため、

<p>Hello {{ name }}</p>

に相当します
composer require twig/twig

jscssurlhtml_attr

エスケープポリシーも利用できます。それらは、それぞれJavaScript、CSS、URI、およびHTML属性コンテキストエスケープ文字列です。

debug

dump()最後に、デバッグを見てみましょう。テンプレート変数のすべての情報にアクセスする必要がある場合があります。これを行うために、小枝にはTwig_Extension_Debug関数があります。この関数はデフォルトでは使用できません。小枝環境を作成するときは、

拡張子を追加する必要があります:
<?php
// 加载我们的自动加载器
require_once __DIR__.'/vendor/autoload.php';

// 指定我们的Twig模板位置
$loader = new Twig_Loader_Filesystem(__DIR__.'/templates');

// 实例化我们的Twig
$twig = new Twig_Environment($loader);

dump()このステップは、生産サーバーに誤ってデバッグ情報をリークしないようにするために必要です。構成が完了したら、

関数を使用して、テンプレート変数に関するすべての情報をダンプするだけです。
<?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] );

結論

この記事が、小枝の基本のための強固な基盤を提供し、すぐにプロジェクトを開始することを願っています! Twigをより詳細に見たい場合は、公式Webサイトには非常に優れたドキュメントと参照をご用意しています。テンプレートエンジンを使用していますか?小枝についてどう思いますか? BladeやSmartyなどの人気のある代替品と比較していただけますか?

(以下のコンテンツはFAQです。元のテキストが含まれています。ここでは省略されています)

以上がTwig-最も人気のあるスタンドアロンPHPテンプレートエンジンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPを使用して電子メールを送信する最良の方法は何ですか?PHPを使用して電子メールを送信する最良の方法は何ですか?May 08, 2025 am 12:21 AM

BestappRoachforseminginphpisusingthephpmailerlibrarydueToitsReliability、featurrichness、andeaseofuse.phpmailerSupportssmtpは、detairederorhandlingを提供します

PHPでの依存関係注射のベストプラクティスPHPでの依存関係注射のベストプラクティスMay 08, 2025 am 12:21 AM

依存関係注射(DI)を使用する理由は、コードのゆるい結合、テスト可能性、および保守性を促進するためです。 1)コンストラクターを使用して依存関係を注入します。2)サービスロケーターの使用を避け、3)依存関係噴射コンテナを使用して依存関係を管理する、4)依存関係を注入することでテスト可能性を向上させる、5)注入依存性を回避、6)パフォーマンスに対するDIの影響を考慮します。

PHPパフォーマンスのチューニングのヒントとコツPHPパフォーマンスのチューニングのヒントとコツMay 08, 2025 am 12:20 AM

phpperformancetuningisucial cuseenhancess andandandadsand。

PHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスPHP電子メールセキュリティ:電子メールを送信するためのベストプラクティスMay 08, 2025 am 12:16 AM

bestpracticesforsendingemails securlyinphpinclude:1)sutureconsmttarttlsencryptionとの使用の使用、2)検証およびサンシジン化のinputStopReventinjectuctacks、3)adinitivedinitivedInemailsopenslsl、4)adlinglinglingemailoaに

パフォーマンスのためにPHPアプリケーションをどのように最適化しますか?パフォーマンスのためにPHPアプリケーションをどのように最適化しますか?May 08, 2025 am 12:08 AM

tooptimizephpapplicationsforporformance、usecaching、databaseoptimization、opcodecaching、andserverconfiguration.1)cachingwithedatedatedatafethtimes.2)最適化バイズビーインデキシング、readedandandandwriteoperations.3)

PHPの依存噴射とは何ですか?PHPの依存噴射とは何ですか?May 07, 2025 pm 03:09 PM

依存関係の依存性、テスト可能性、および維持可能性の依存性の依存性の依存性、および維持可能性は、エクステルンド依存性を維持する可能性があります

最高のPHPパフォーマンス最適化手法最高のPHPパフォーマンス最適化手法May 07, 2025 pm 03:05 PM

PHPパフォーマンスの最適化は、次の手順を通じて実現できます。1)スクリプトの上部にrequire_onceまたはinclude_onceを使用して、ファイルの負荷数を減らすことができます。 2)プリプロセシングステートメントとバッチ処理を使用して、データベースクエリの数を減らします。 3)OpCodeキャッシュのOpCacheを構成します。 4)PHP-FPM最適化プロセス管理を有効にして構成します。 5)CDNを使用して静的リソースを配布します。 6)コードパフォーマンス分析には、XdebugまたはBlackfireを使用します。 7)配列などの効率的なデータ構造を選択します。 8)最適化実行のためのモジュラーコードを記述します。

PHPパフォーマンスの最適化:OpCodeキャッシングの使用PHPパフォーマンスの最適化:OpCodeキャッシングの使用May 07, 2025 pm 02:49 PM

opcodeCachingsificlyprovesppherformanceBycachingCompiledCode、reducingServerloadandResponsetimes.1)itStoresPhpCodeInMemory、バイパス補助補強団体

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター