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

Twig-最も人気のあるスタンドアロンPHPテンプレートエンジン

Lisa Kudrow
Lisa Kudrowオリジナル
2025-02-09 09:07:11863ブラウズ

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」を好みますか:>

または

<code class="language-php"><?php echo "<p> Hello " . $name . "</p>"; ?></code>

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

<code class="language-twig"><p>Hello {{ name }}</p></code>

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

インストール

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

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

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

基本的な使用法

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

<code class="language-php"><?php echo "<p> Hello " . $name . "</p>"; ?></code>
Twigは

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

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

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

<code class="language-bash">composer require twig/twig</code>
ブラウザで

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

Twig - the Most Popular Stand-Alone PHP Template Engine

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

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

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

レイアウト

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

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>

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

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

この時点では、

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

キャッシュ

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

<code class="language-php"><?php echo "<p> Hello " . $name . "</p>"; ?></code>

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

サイクル

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

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

または文字:
<code class="language-twig"><p>Hello {{ name }}</p></code>

この演算子は、

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

range 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>

Twigは、

タグの形式の条件付きステートメントも提供します。他のプログラミング言語と同様に、これらのタグを使用してテンプレート内の条件をフィルタリングできます。この例では、500を超える値の製品のみを表示するとします。 if elseifif notフィルター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>
フィルターを使用すると、テンプレートに渡された情報と表示される情報の形式をフィルタリングできます。最も一般的に使用されている重要なフィルターのいくつかを見てみましょう。小枝フィルターの完全なリストはこちらをご覧ください。

日付と

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

date_modify

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

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

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

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

<code class="language-html"><!DOCTYPE html>

    
        <meta charset="UTF-8">
        <title>Tutorial Example</title>
    
    
        {% block content %}
        {% endblock %}
    
</code>

format

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

escape

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

<code class="language-twig"><p>Hello {{ name }}</p></code>

に相当します
<code class="language-bash">composer require twig/twig</code>

jscssurlhtml_attr

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

debug

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

拡張子を追加する必要があります:
<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()このステップは、生産サーバーに誤ってデバッグ情報をリークしないようにするために必要です。構成が完了したら、

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

結論

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

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

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。