ごく最近、人気のあるテンプレートエンジンSmarty 3の最終バージョンがリリースされました。
-PHP5で書き直され、PHP4では動作しなくなりました(PHP 5.1が必要です)
-クラスローダーを使用
-テンプレート用の実際のパーサーとレクサーを所有しているため、テンプレートの複雑な数学、文字列に正確なエラーメッセージ、テンプレート関数のネストされた呼び出しなどのイノベーションを導入できます。
-利用可能なテンプレートオブジェクト
$tpl = $smarty->createTemplate('my.tpl'); $tpl->assign('foo','bar'); $smarty->display($tpl);
-データオブジェクト:
$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のコードは快適です。