PHP EasyTplの機能とインストール・使い方を詳しく解説

藏色散人
リリース: 2023-04-10 19:52:01
転載
3648 人が閲覧しました

EasyTpl - シンプルで高速な PHP テンプレート エンジン

シンプルで高速な PHP テンプレート エンジン。

特徴

  • シンプル、軽量、高速。
    • 学習コストなし
    • 単純な処理とネイティブ PHP 構文への変換
    • PHP ネイティブ構文の使用と互換性がある
  • 出力が簡単構文。例: {{= $var }} {{ $var }} {{ echo $var }}
  • すべてのコントロールをサポートします構文 。たとえば、if,elseif,else;foreach;for;switch
  • は、配列値への連鎖アクセスをサポートします。例: {{ $arr.0 }} {{ $map.name }} {{ $map.user.name }}
  • より安全なため、出力結果はデフォルトで htmlspecialchars によって自動的に処理されます。
    • 無効にするか手動で使用しない限り、raw filter
  • #PHP 組み込み関数をフィルターとして使用することをサポートします。例:
  • {{ $var | ucfirst }}
  • カスタム フィルターの追加のサポート
    • デフォルトの組み込みフィルター:
    • upper lower nl
  • カスタム命令の追加とカスタム関数の提供をサポート
  • テンプレートへのコメントの追加をサポートします。例:
  • {{# コメント ... #}}

インストール

    PHP 8.0 が必要

composer

composer require phppkg/easytpl
ログイン後にコピー

クイック スタート
use PhpPkg\EasyTpl\EasyTemplate;

$tplCode = <<<&#39;CODE&#39;
My name is {{ $name | strtoupper }},
My develop tags:

{{ foreach($tags as $tag) }}
- {{ $tag }}

{{ endforeach }}
CODE;

$t = new EasyTemplate();

$str = $t->renderString($tplCode, [
    &#39;name&#39; => &#39;inhere&#39;,
    &#39;tags&#39; => [&#39;php&#39;, &#39;go&#39;, &#39;java&#39;],
]);

echo $str;
ログイン後にコピー

レンダリング出力:

My name is INHERE,My develop tags:- php- go- java
ログイン後にコピー

その他の使用方法

構文は PHP ネイティブ テンプレートと同じですが、より使いやすくするために特別な構文が追加されています。

  • EasyTemplate 出力フィルタリングはデフォルトでオンになっており、ビュー テンプレートのレンダリングに使用できます
  • TextTemplate 出力フィルタリングをオフにし、主にテキスト処理、コード生成などに使用されます。

構成設定
use PhpPkg\EasyTpl\EasyTemplate;$t = EasyTemplate::new([
    &#39;tplDir&#39; => &#39;path/to/templates&#39;,
    &#39;allowExt&#39; => [&#39;.php&#39;, &#39;.tpl&#39;],]);// do something ...
ログイン後にコピー

その他の設定:

/** @var PhpPkg\EasyTpl\EasyTemplate $t */
$t->disableEchoFilter();
$t->addFilter($name, $filterFn);
$t->addFilters([]);
$t->addDirective($name, $handler);
ログイン後にコピー

出力変数値

以下 同じステートメントを使用して変数値を出力できます

{{ $name }}{{= $name }}{{ echo $name }}
ログイン後にコピー

詳細:

{{ $name ?: &#39;inhere&#39; }}{{ $age > 20 ? &#39;20+&#39; : &#39;<= 20&#39; }}
ログイン後にコピー

デフォルトでは、出力結果は

htmlspecialchars を通じて自動的に処理されます (ただし、raw フィルターを無効にするか手動で使用するように設定する場合を除く)

    出力フィルタリングを無効にするように設定する
  • $t->disableEchoFilter()# #テンプレートで出力フィルタリングを無効にする
  • {{ $name | raw }}
##配列値にすばやくアクセスする

.

を使用すると、配列値にすばやくアクセスできます。オリジナルの書き方も用意されており、簡潔な書き方はネイティブの書き方に自動変換されます。

$arr = [
    &#39;val0&#39;,
    &#39;subKey&#39; => &#39;val1&#39;,];
ログイン後にコピー
テンプレートで使用:
first value is: {{ $arr.0 }} // val0&#39;subKey&#39; value is: {{ $arr.subKey }} // val1
ログイン後にコピー

If ステートメント ブロック

if

ステートメント:

{{ if ($name !== &#39;&#39;) }}hi, my name is {{ $name }}{{ endif }}
ログイン後にコピー
if else

ステートメント:

hi, my name is {{ $name }}age is {{ $age }}, and{{ if ($age >= 20) }}
 age >= 20.{{ else }}
 age < 20.{{ endif }}
ログイン後にコピー
if...elseif...else

ステートメント:

hi, my name is {{ $name }}age is {{ $age }}, and{{ if ($age >= 50) }}
 age >= 50.{{ elseif ($age >= 20) }}
 age >= 20.{{ else }}
 age < 20.{{ endif }}
ログイン後にコピー

For/Foreach ステートメントブロック

foreach

:

tags:{{ foreach($tags as $tag) }}- {{ $tag }}{{ endforeach }}
ログイン後にコピー
withkeys:
tags:{{ foreach($tags as $index => $tag) }}{{ $index }}. {{ $tag }}{{ endforeach }}
ログイン後にコピー

コメント

をテンプレートに追加 {{

# および

#}} パッケージの内容はコメントとして無視されます。

{{# comments ... #}}{{ $name }} // inhere
ログイン後にコピー
複数行:
{{# this
 comments
 block
#}}{{ $name }} // inhere
ログイン後にコピー

フィルターを使用

デフォルトの組み込みフィルター:

upper
    -
  • strtoupper lower
  • と同等 -
  • strto lowernl
  • と同等 -改行を追加
  • \n
フィルターの使用例

フィルターはどのテンプレートでも使用できます。

基本的な使用法

:

{{ &#39;inhere&#39; | ucfirst }} // Inhere {{ &#39;inhere&#39; | upper }} // INHERE
ログイン後にコピー
チェーンの使用法

:

{{ &#39;inhere&#39; | ucfirst | substr:0,2 }} // In{{ &#39;1999-12-31&#39; | date:&#39;Y/m/d&#39; }} // 1999/12/31
ログイン後にコピー
非静的値の受け渡し

:

{{ $name | ucfirst | substr:0,1 }}{{ $user[&#39;name&#39;] | ucfirst | substr:0,1 }}{{ $userObj->name | ucfirst | substr:0,1 }}{{ $userObj->getName() | ucfirst | substr:0,1 }}
ログイン後にコピー
変数をフィルター パラメーターとして渡す

:

{{
    $suffix = &#39;¥&#39;;}}{{ &#39;12.75&#39; | add_suffix:$suffix }} // 12.75¥
ログイン後にコピー

カスタム フィルター

use PhpPkg\EasyTpl\EasyTemplate;$tpl = EasyTemplate::new();// use php built function$tpl->addFilter(&#39;upper&#39;, &#39;strtoupper&#39;);// 一次添加多个$tpl->addFilters([
    &#39;last3chars&#39; => function (string $str): string {
        return substr($str, -3);
    },]);
ログイン後にコピー
テンプレートで使用:
{{
  $name = &#39;inhere&#39;;}}{{ $name | upper }} // INHERE{{ $name | last3chars }} // ere{{ $name | last3chars | upper }} // ERE
ログイン後にコピー

カスタム命令

命令を使用して、特別なロジックを実装できます。
$tpl = EasyTemplate::new();$tpl->addDirective(
    &#39;include&#39;,
    function (string $body, string $name) {
        /** will call {@see EasyTemplate::include()} */
        return &#39;$this->&#39; . $name . $body;
    });
ログイン後にコピー

テンプレートで使用:

{{ include(&#39;part/header.tpl&#39;, [&#39;title&#39; => &#39;My world&#39;]) }}
ログイン後にコピー

Github: github.com/phppkg/easytpl

推奨調査: " PHPビデオチュートリアル"

以上がPHP EasyTplの機能とインストール・使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート