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

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

Feb 09, 2025 am 09:07 AM

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 までご連絡ください。

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO) PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO) Apr 15, 2025 am 12:15 AM

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHP:データベースとサーバー側のロジックの処理 PHP:データベースとサーバー側のロジックの処理 Apr 15, 2025 am 12:15 AM

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPの目的:動的なWebサイトの構築 PHPの目的:動的なWebサイトの構築 Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

See all articles