検索
ホームページバックエンド開発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:実際の例とアプリケーションApr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:インタラクティブなWebコンテンツを簡単に作成しますPHP:インタラクティブなWebコンテンツを簡単に作成しますApr 14, 2025 am 12:15 AM

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPython:2つの一般的なプログラミング言語を比較しますPHPとPython:2つの一般的なプログラミング言語を比較しますApr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの永続的な関連性:それはまだ生きていますか?PHPの永続的な関連性:それはまだ生きていますか?Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHP:Web開発の重要な言語PHP:Web開発の重要な言語Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。