Smarty 3 Finalがリリースされました。 新機能

ごく最近、人気のあるテンプレートエンジンSmarty 3の最終バージョンがリリースされました。





-PHP5で書き直され、PHP4では動作しなくなりました(PHP 5.1が必要です)

-クラスローダーを使用



-テンプレート用の実際のパーサーとレクサーを所有しているため、テンプレートの複雑な数学、文字列に正確なエラーメッセージ、テンプレート関数のネストされた呼び出しなどのイノベーションを導入できます。



-利用可能なテンプレートオブジェクト

$tpl = $smarty->createTemplate('my.tpl'); $tpl->assign('foo','bar'); $smarty->display($tpl); // or $tpl->display();
      
      







-データオブジェクト:

 $data = new Smarty_Data; $data->assign('foo','bar'); $smarty->display('my.tpl',$data); $tpl = $smarty->createTemplate('my.tpl',$data);
      
      







-PHPスレッドのサポート

 $smarty->display('foo:bar.tpl'); {include file="foo:bar.tpl"}
      
      





これらの場合、登録されたfooリソースが最初に検索され、テンプレートがロードされます。 何も見つからない場合、Smartyはfooをチェックします://



-テンプレートの継承

親.tpl

 <html>
   <head>
  	 <title> {block name = title}デフォルトのタイトル{/ block} <title>
   </ head>
   <本体>
	 {ブロック名=本体}デフォルトの本体{/ブロック}
   </ body>
 </ html>

子.tpl

 {extends file = "parent.tpl"}
 {ブロック名=タイトル}私の子供のタイトル{/ブロック}
 {block name = body}私の子供の体{/ block}

結果$ smarty-> display( 'child.tpl');

 <html>
   <head>
  	 <title>私の子供のタイトル<title>
   </ head>
   <本体>
	私の子供の体
   </ body>
 </ html>




-中括弧がスペースで囲まれている場合、中括弧「{」、「}」を自動的に無視します(Javascript {literal} {/ literal}を囲む必要も、別のタグマーカーを使用する必要もありません)。



-すべてのデフォルトのテンプレート変数を表示するためのフィルター

  $smarty->registerFilter('variable','htmlspecialchars');
      
      







-テンプレートの機能

 {*関数を定義する*}
 {関数名=メニューレベル= 0}
   <ul class = "レベル{$レベル}">
   {$エントリとして$データをforeach}
     {if_is_array($エントリ)}
       <li> {$ entry @ key} </ li>
       {メニューデータ= $エントリレベル= $レベル+ 1}
     {else}
       <li> {$エントリ} </ li>
     {/ if}
   {/ foreach}
   </ ul>
 {/関数}

 {*配列を作成する*}
 {$ menu = ['item1'、 'item2'、 'item3' => ['item3-1'、 'item3-2'、 'item3-3' =>
 ['item3-3-1'、 'item3-3-2']]、 'item4']}

 {*関数を実行します*}
 {メニューデータ= $メニュー}
 <pre>
おわりに

 * item1
 * item2
 * item3
       o item3-1
       o項目3-2
       o item3-3
             + item3-3-1
             +アイテム3-3-2
 * item4




-要素レベルのキャッシュ管理

  {$ foo nocache}-この変数の内容をキャッシュしません
  {include file = "foo.tpl" nocache}-含まれるファイルの内容をキャッシュしません




-Smarty 2とのほぼ完全な互換性。

-{php}タグの使用はデフォルトで無効になっており、非推奨と見なされます。

-SmartyはデフォルトでUTF-8パターンエンコーディングになりました。



3つは非常に簡単でした。 すべてのクラスを含むメインファイルは、わずか27 KBです。 foreachのようなユーティリティタグも含め、ほとんどの機能はプラグインされており、テンプレートをコンパイルする必要がある場合はロードされます。 ただし、コンパイル時には、少なくともプラグインsmarty_internal_templatelexer + smarty_internal_templateparser.phpがロードされることに注意してください。これはすでに〜200 KBです。 ただし、通常の操作では、負荷の高いサイトでテンプレートをコンパイルする必要は通常ないため、30Kbのコードは快適です。



All Articles