Blitzドキュメントから:非常に大規模なインターネットプロジェクト向けの非常に高速で強力なテンプレートエンジン。
いくつかの事実を引用します。
- これは、Habréが使用するテンプレートエンジンです。
 - このテンプレートエンジンは、負荷の高いプロジェクトで使用され、Cで記述され、PHP拡張機能として接続されています。
 - その速度はphp自体に匹敵します(カットの下のベンチマーク)。
 - テンプレートにはアプリケーションロジックがなく、ループや分岐などがないため、レイアウト設計者は満足します。
 - 著者の一人は、アレクセイ・ライバック漁師です。
 

Blitzは、Smartyなどと根本的に異なる
ブロックテンプレートエンジンです。
Blitzと比較したSmartyはプログラミング言語です。
Blitzテンプレートの構文は、3つの構成要素に基づいています。
- ブロック(コンテキストです):{{BEGIN blockName}}ブロックの内容{{END}}
 - 変数:{{$ var}}
 - 関数呼び出し{{myFunc($ params)}}
 
ループ、条件ステートメント、およびその他の豊富な構文がありません。 これにより、ロジックの分離が保証されます。
プレゼンテーションロジックからのアプリケーション。 その結果、テンプレートはプロジェクトの成長に混乱することはありません。
コード編成の観点から、ビュー(MVC)コンポーネントは2つの部分に分けることができます。
- テンプレート (Blitzタグ付きのHTMLファイル);
 - テンプレートコントローラー -これは、テンプレートの処理を制御するBlitzオブジェクトです(Webアプリケーションコントローラーと混同しないでください)。
 
テンプレートコントローラーは、プログラマーが多く処理できるテンプレートのすべての冗長ロジックを搭載しています
タイプセッターよりも効果的です。
いくつかの例:
1.伝統により:こんにちは、世界!
テンプレートtemplate.tpl:
 
    こんにちは、{{$ name}}!
スクリプト:
  
     $ template = new Blitz( 'template.tpl');
     echo $ template-> parse(array( 'name' => 'world'));
2.テンプレートはファイルからだけでなくダウンロードできます。
Blitzを試すには、ダウンロードできます
変数からスクリプトコードで直接テンプレート:
  
     $ template = new Blitz();
     $ template-> load( 'Hello、{{$ name}}!');
     echo $ template-> parse(array( 'name' => 'world'));
3.ブロック(コンテキスト):
ブロックは、必要に応じて表示できるテンプレートの一部です。
    こんにちは{{BEGINブロック}} {{$ name}} {{END}}
デフォルトでは、このテンプレートには文字列「hello」が表示され、ブロックは非表示になります。
次のコードは、ブロックを1回印刷します。
  
     $ template = new Blitz( 'some.tpl');
     $ template-> block( '/ block'、array( 'name' => 'Dude'));
     echo $ template-> parse();
結果
  「こんにちは」。 
ブロックの同義語はコンテキストです。 ブロックの出力は反復と呼ばれます。
明確にするために、ENDステートメントの後にブロックの名前を指定できます。
{{ENDブロック}}。
4.出力を数回ブロックします(リストまたはループ):
各ブロックを数回「反復」して、リスト(Smartyのサイクルのアナログ)、テンプレートコントローラーコードを表示できます。
     foreach(array( 'Dude'、 'Sobchak'、 'Donny')as $ i_name){
       $ template-> block( '/ block'、array( 'name' => $ i_name);
     }
前の例のテンプレートに対してこのコードを実行すると、次のことがわかります。
     「こんにちは、Donny Sobchak」
5.用語
次に、同じリストをコンマで区切って表示してみましょう。
これを行うには、ブロックまたはifステートメントを使用する2つの方法があります。
まず、ブロックを使用します。
 こんにちは{{BEGINブロック}} {{BEGINカンマ}}、{{END}} {{$ name}} {{END}} ループで繰り返します:
     $ need_comma = FALSE;
     foreach(array( 'Dude'、 'Sobchak'、 'Donny')as $ i_name){
        if($ need_comma){
            $ template-> block( '/ block /カンマ');
        } else {
            $ need_comma = TRUE;
        }
        $ template-> block( '/ block'、array( 'name' => $ i_name);
     }
私にとっては、あまりエレガントではありません。 このような単純なケースでは、ifステートメントを使用する方が適切です。
    こんにちは{{BEGINブロック}} {{if($ _ first、 ''、 '、')}} {{$ name}} {{END}}。
Blitzには、ブロックの定義済み変数があります: 
$ _first (最初の反復)、
$ _last (最後の反復)、 
$ _total (総数)、 
$ _num 、 
$ _even 、 
$ _odd 。
名前は、目的について簡単に推測できます。 定義することもできます
テンプレートコントローラーからの変数。
例としてさらに2つ:
     {{if(TRUE、 '2 + 2 = 4'、 '2 + 2 = 5');  }}
     {{if($ a、 "b"、$ c);  }}
6.コンテキストと反復の使用
ブロックの代わりに、3つの低レベルメソッドの組み合わせを使用できます。
コンテキスト 、 
設定および
反復 。 
コンテキストメソッドは、1つのパラメーター(完全または相対)を取ります
パス、それ以降のすべてのセットおよび相対パスは、デフォルトでこのパスを使用します。
     $ template-> context( '/ block');
     foreach(array( 'Dude'、 'Sobchak'、 'Donny')as $ i_name){
       $ template-> iterate();
       $ template-> set(array( 'name' => $ i_name));
     }
コンテキストメソッドは、cd consoleコマンドのように機能します。
反復メソッドはブロックを「表示」します。
ブロックの使用
は簡単ですが、多くの場合、必要になります
コンテキストと反復を伴う低レベル操作。
7.すべては反復です
テンプレートの各状態は、特定のデータ構造によって記述できます。
前の例に次のコードを追加した場合:
     $ data = $ template-> getIterations();
$データの構造は次のとおりです。
  配列(
       0 =>配列(
           'block' =>配列(
                0 =>配列( 'name' => 'Dude')、
                1 =>配列( 'name' => 'Sobchak')、
                2 =>配列( 'name' => 'Donny')
            )
       )、
   )
これは、 
解析メソッドを呼び出す前のテンプレートの内部状態です。
block 、 
set 、 
iterate 、 
contextメソッドを使用してテンプレートをどうするか-
Blitzはこの配列を変更します。 
解析メソッドが呼び出されたとき-ブリッツレンダリング
この構造に基づいたテンプレート。
さまざまな課題を実践し、ダンプで何が起こるかを確認して、迅速なデバッグを実現
あなたのコード。
8.すべて同じで、配列を通して:
     $データ=配列(
         0 =>配列(
             'block' =>配列(
                  0 =>配列( 'name' => 'Dude')、
                  1 =>配列( 'name' => 'Sobchak')、
                  2 =>配列( 'name' => 'Donny')
              )
         )、
     );
     $ template = new Blitz( 'some.tpl');
     echo $ template-> parse($ data);
some.tpl:
     {{BEGINブロック}} {{if($ _ first、 ''、 '、')}} {{$ name}} {{END}}
前の例と同じ結果ですが、
ブロック/コンテキスト/反復メソッドを使用せずに。
9.ネストされた反復
     $データ=配列(
        配列(
             'who' => 'soldiers'、
             'what' =>配列(
                 0 =>配列(
                     '動詞' => 'going'、
                     'details' =>配列(
                         0 =>配列( 'item' => 'nowhere')、
                     )
                 )、
                 1 =>配列(
                     「動詞」=>「盲目」、
                     'details' =>配列(
                         0 =>配列( 'item' => 'by')、
                         1 =>配列( 'item' => 'their')、
                         2 =>配列( 'item' => 'faith')
                     )
                 )
             )
         )
     );
     $ template = new Blitz();
     $ template-> load( '{{$ who}} {{BEGIN what}} {{$ verb}} {{BEGIN details}} {{$ item}} {{END}} {{END}}');
     $ template-> set($ data);
     echo $ template-> parse();
実行結果:
    信仰によって盲目にされない兵士
それがどのように機能するかを理解すれば、あなたは完全に認識しています。
コンテキストと反復。
10.テンプレートの一部を操作できます
テンプレート全体に関係なく、テンプレートの一部(ブロック)を使用すると便利な場合があります。
これは、 
fetchメソッドを使用して実行できます。
some.tpl:
     {{BEGIN hello}}こんにちは、{{$ name}} {{END}}
     {{BEGIN bye}}さようなら、{{$ name}} {{END}}
コード:
     echo $ template-> fetch( '/ hello'、array( 'name' => 'Lena'));  //こんにちは、レナ
     echo $ template-> fetch( '/ bye'、array( 'name' => 'Sveta'));  //さようなら、Sveta
11.テンプレート内の関数呼び出し:
次のコード
  {{my_test($ a、 "foo"、 'bar'、TRUE、2005);  }} 意味する
パラメーターを指定して
my_testメソッドを呼び出すもの。
次のように
my_test関数
を追加します。
  クラスビューはBlitzを拡張します{
      関数my_test($ a){
           return '(user method called(' .__ CLASS __。 '、' .__ LINE__。 ')、a ='。$ a;
       }
   }
   $ template = new View();
   $ template-> load( 'user method call test:{{my_test( "test")}}');
   echo $ template-> parse();
結果:
    ユーザーメソッド呼び出しテスト:ユーザーメソッド呼び出し(blitztemplate、5)、a =テスト
結論として:
この概要は、 
Quck Geek Blitz Tutorialチュートリアルの無料翻訳として書かれています。
詳細については、このテンプレートエンジンの使用の基本のみを示しています
ドキュメントを参照
する価値
があります 。
参照資料
BlitzプロジェクトのWebサイト: 
alexeyrybak.com/blitz/blitz_ru.htmlテンプレートとベンチマークの例: 
alexeyrybak.com/blitz/lebowski_bench.tar.gz