国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
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という名前のコアオブジェクトを使用して、ファイルシステムまたはその他の場所から構(gòu)成、拡張機能、ロードテンプレートを保存します。 Twigは、ネストされたテンプレート(ブロック)をサポートし、テンプレート內(nèi)の要素の重複を回避し、コンパイルしたテンプレートをキャッシュして、後続の要求を高速化できます。 Twigは、條件付きステートメント、ループ、フィルターをサポートして、テンプレート內(nèi)の情報の表示を制御し、テンプレート変數(shù)に関するすべての情報をダンプするデバッグ機能を提供します。

この記事は、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がセットアップされ、作曲家がグローバルにインストールされている環(huán)境を?qū)g行していると仮定します。最良の方法は、Homesteadの改善を使用することです。これにより、使用しているのとまったく同じマシンで5分で使用を開始できるように、同じページに表示されます。 PHP環(huán)境について詳しく知りたい場合は、購入のためにこれについて優(yōu)れた有料の本があります。
composer require twig/twig

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

基本的な使用法

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

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

という名前のコアオブジェクトを使用します。このタイプのインスタンスは、ファイルシステムまたは他の場所からテンプレートを構(gòu)成、拡張機能、ロードテンプレートの保存に使用します。 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つのタイプがあります。

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

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

レイアウト

テンプレートで要素の重複(ヘッダーやフッターなど)を避けるために、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ブロックを?qū)g裝できることを意味します。これにより、レイアウトを書き直さずに複數(shù)回再利用できます。この場合、layout.htmlファイルは次のようになりました:content index.html

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

この時點では、

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

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

サイクル

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

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

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

この演算子は、

関數(shù)の単なる構(gòu)文糖であり、ネイティブPHP
composer require twig/twig
関數(shù)と同じように機能します。同様に便利なオプションは、ループに條件を追加することです。條件を使用して、反復する要素をフィルタリングできます。 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は、、

、

タグの形式の條件付きステートメントも提供します。他のプログラミング言語と同様に、これらのタグを使用してテンプレート內(nèi)の條件をフィルタリングできます。この例では、500を超える値の製品のみを表示するとします。 if elseifif notフィルター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フィルターを使用して、

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

js、css、urlhtml_attr、

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

debug

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

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

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

// 實例化我們的Twig
$twig = new Twig_Environment($loader);

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

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

結(jié)論

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

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

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

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

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 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPベースのAPIをバージョン化するためのベストプラクティスは何ですか? PHPベースのAPIをバージョン化するためのベストプラクティスは何ですか? Jun 14, 2025 am 12:27 AM

Toversionaphp Basedificefectivivivity、useurl Basedversioning forclarity-andeaseaseasedease、depateversionedcodetoavoidconflicts、deprecateoldversions withclearcommunication、andconsider-customheadersally whendary.starttheversionionintheurl(e.g。、/api/v

PHPに認証と承認を?qū)g裝するにはどうすればよいですか? PHPに認証と承認を?qū)g裝するにはどうすればよいですか? Jun 20, 2025 am 01:03 AM

tosecurelyhandLeauthenticationAndauthorizationInizationInization、followTheSteps:1.LwayShashPasswordswithPassword_hash()andverifyusingpassword_verify()、usepreparedStatementStatementStatementStatementStatementStain、andstoreUserdatain $ _SessionAfterlogin.2.implementRementRementRementRementRementRementRementRole

PHPの弱い參照(WeakMap)とは何ですか? PHPの弱い參照(WeakMap)とは何ですか? Jun 14, 2025 am 12:25 AM

phpdoesnothaveabuiltinweakmapbutofferswutreferenceforsimilarfunctionality.1.weakreferenceallowsholdingReferences withoutpreventinggarbagecollectrection.2.itisusfulfurcaching、eventlisteners、およびmetadatawithectingovecting objectinimulatea

PHPにおける手続き型とオブジェクト指向のプログラミングパラダイムの違いは何ですか? PHPにおける手続き型とオブジェクト指向のプログラミングパラダイムの違いは何ですか? Jun 14, 2025 am 12:25 AM

ProceduralAndObject-OrientedProgramming(OOP)InphpdifferSifically-datability、andDatahandling.1.proceduralprogramsessusessuseSideSized funized、surtableforsmallscript.2.ooporganizescodeIntoclassesandobjects、ModelingReal-worden

PHPでファイルアップロードを安全に処理するにはどうすればよいですか? PHPでファイルアップロードを安全に処理するにはどうすればよいですか? Jun 19, 2025 am 01:05 AM

PHPでファイルアップロードを安全に処理するために、コアはファイルタイプを確認し、ファイルの名前を変更し、権限を制限することです。 1。Finfo_File()を使用して実際のMIMEタイプを確認し、Image/JPEGなどの特定のタイプのみが許可されます。 2。uniqid()を使用してランダムファイル名を生成し、非webルートディレクトリに保存します。 3. PHP.iniおよびHTMLフォームを介してファイルサイズを制限し、ディレクトリ権限を0755に設定します。 4. Clamavを使用してマルウェアをスキャンしてセキュリティを強化します。これらの手順は、セキュリティの脆弱性を効果的に防止し、ファイルのアップロードプロセスが安全で信頼性が高いことを確認します。

PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? Jun 19, 2025 am 01:07 AM

PHPでは、==と==の主な違いは、タイプチェックの厳格さです。 ==タイプ変換は比較の前に実行されます。たとえば、5 == "5"はtrueを返します。===リクエストは、trueが返される前に値とタイプが同じであることを要求します。たとえば、5 === "5"はfalseを返します。使用シナリオでは、===はより安全で、最初に使用する必要があります。==は、タイプ変換が必要な場合にのみ使用されます。

PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? Jun 19, 2025 am 01:07 AM

はい、PHPは、特定の拡張機能またはライブラリを使用して、MongoDBやRedisなどのNOSQLデータベースと対話できます。まず、MongoDBPHPドライバー(PECLまたはComposerを介してインストール)を使用して、クライアントインスタンスを作成し、データベースとコレクションを操作し、挿入、クエリ、集約、その他の操作をサポートします。第二に、PredisライブラリまたはPhpredis拡張機能を使用してRedisに接続し、キー価値設定と取得を?qū)g行し、高性能シナリオにPhpredisを推奨しますが、Predisは迅速な展開に便利です。どちらも生産環(huán)境に適しており、十分に文書化されています。

PHP(、 - 、 *、 /、%)で算術(shù)操作を?qū)g行するにはどうすればよいですか? PHP(、 - 、 *、 /、%)で算術(shù)操作を?qū)g行するにはどうすればよいですか? Jun 19, 2025 pm 05:13 PM

PHPで基本的な數(shù)學操作を使用する方法は次のとおりです。1。追加標識は、整數(shù)と浮動小數(shù)點數(shù)をサポートし、変數(shù)にも使用できます。文字列番號は自動的に変換されますが、依存関係には推奨されません。 2。減算標識の使用 - 標識、変數(shù)は同じであり、タイプ変換も適用されます。 3.乗算サインは、數(shù)字や類似の文字列に適した標識を使用します。 4.分割はゼロで割らないようにする必要がある分割 /標識を使用し、結(jié)果は浮動小數(shù)點數(shù)である可能性があることに注意してください。 5.モジュラス標識を採取することは、奇妙な數(shù)と偶數(shù)を判斷するために使用でき、負の數(shù)を処理する場合、殘りの兆候は配當と一致しています。これらの演算子を正しく使用するための鍵は、データ型が明確であり、境界の狀況がうまく処理されるようにすることです。

See all articles