Smarty - コンパイリング PHP テンプレートエンジン

Ohrt <monte at ohrt dot com> Monte [FAMILY Given]

Tews <uwe dot tews at googlemail dot com> Uwe [FAMILY Given]

Matsuda <mat-sh at fj9 dot so-net dot ne dot jp> Shinsuke [FAMILY Given]

Kamemoto <daichi at asial dot co dot jp> Daichi [FAMILY Given]

Morikawa <joe at asial dot co dot jp> Joe [FAMILY Given]

Takagi <takagi@php.net> Masahiro [FAMILY Given]

Takaoka <mumumu at mumumu dot org> Yoshinari [FAMILY Given]

2013-06-17


目次

序文
I. はじめに
1. Smarty とは?
2. インストール
必要条件
基本的なインストール
拡張セットアップ
II. テンプレートデザイナのための Smarty
3. 基本構文
コメント
変数
関数
属性
ダブルクォート内に埋め込まれた変数
演算
Smarty の構文解析を回避する
4. 変数
PHP から割り当てられた変数
連想配列
配列のインデックス
オブジェクト
変数のスコープ
設定ファイルから読み込まれた変数
予約変数 {$smarty}
リクエスト変数
{$smarty.now}
{$smarty.const}
{$smarty.capture}
{$smarty.config}
{$smarty.section}
{$smarty.template}
{$smarty.template_object}
{$smarty.current_dir}
{$smarty.version}
{$smarty.block.child}
{$smarty.block.parent}
{$smarty.ldelim}, {$smarty.rdelim}
5. 変数の修飾子
capitalize
cat
count_characters
count_paragraphs
count_sentences
count_words
date_format
default
escape
from_charset
indent
lower
nl2br
regex_replace
replace
spacify
string_format
strip
strip_tags
to_charset
truncate
unescape
upper
wordwrap
6. 修飾子の連結
7. 組み込み関数
{$var=...}
{append}
{assign}
{block}
{call}
{capture}
{config_load}
{debug}
{extends}
{for}
{foreach},{foreachelse}
@index
@iteration
@first
@last
@show
@total
{break}
{continue}
{function}
{if},{elseif},{else}
{include}
{include_php}
{insert}
{ldelim},{rdelim}
{literal}
{nocache}
{php}
{section},{sectionelse}
.index
.index_prev
.index_next
.iteration
.first
.last
.rownum
.loop
.show
.total
{setfilter}
{strip}
{while}
8. カスタム関数
{counter}
{cycle}
{eval}
{fetch}
{html_checkboxes}
{html_image}
{html_options}
{html_radios}
{html_select_date}
{html_select_time}
{html_table}
{mailto}
{math}
{textformat}
9. 設定ファイル
10. デバッギングコンソール
III. プログラマのための Smarty
11. 文字セットの符号化
文字セットの符号化
12. 定数
SMARTY_DIR
13. Smarty クラス変数
$allow_php_templates
$auto_literal
$autoload_filters
$cache_dir
$cache_id
$cache_lifetime
$cache_locking
$cache_modified_check
$caching
$caching_type
$compile_check
$compile_dir
$compile_id
$compile_locking
$compiler_class
$config_booleanize
$config_dir
$config_overwrite
$config_read_hidden
$debug_tpl
$debugging
$debugging_ctrl
$default_config_type
$default_modifiers
$default_resource_type
$default_config_handler_func
$default_template_handler_func
$direct_access_security
$error_reporting
$escape_html
$force_cache
$force_compile
$left_delimiter
$locking_timeout
$merge_compiled_includes
$php_handling
$plugins_dir
$right_delimiter
$smarty_debug_id
$template_dir
$trusted_dir
$use_include_path
$use_sub_dirs
14. Smarty クラスメソッド
addConfigDir() - 設定ファイルを格納するディレクトリのリストにディレクトリを追加する
addPluginsDir() - プラグインを格納するディレクトリのリストにディレクトリを追加する
addTemplateDir() - テンプレートを格納するディレクトリのリストにディレクトリを追加する
append() - 割り当てられたテンプレート配列に要素を追加します。
appendByRef() - 参照として値を追加します。
assign() - テンプレートに値/オブジェクトを割り当てます。
assignByRef() - 参照として値を割り当てます。
clearAllAssign() - 割り当てられた全てのテンプレート変数を破棄します。
clearAllCache() - 全てのテンプレートのキャッシュをクリアします。
clearAssign() - 割り当てられたテンプレート変数の値を破棄します。
clearCache() - 指定したテンプレートのキャッシュを破棄します。
clearCompiledTemplate() - 指定したテンプレートのキャッシュを破棄します。
clearConfig() - 割り当てられたすべての設定ファイルの変数をクリアします。
compileAllConfig() - すべての既知の設定ファイルをコンパイルする
compileAllTemplates() - すべての既知のテンプレートをコンパイルする
configLoad() - 設定ファイルのデータを読み込み、テンプレートに割り当てます。
createData() - データオブジェクトを作成する
createTemplate() - テンプレートオブジェクトを返す
disableSecurity() - テンプレートのセキュリティを無効にする
display() - テンプレートを表示します。
enableSecurity() - テンプレートのセキュリティを有効にする
fetch() - テンプレートの出力を返します。
getCacheDir() - レンダリングしたテンプレートの出力先ディレクトリを返す
getCompileDir() - コンパイルしたテンプレートの出力先ディレクトリを返す
getConfigDir() - 設定ファイルを格納するディレクトリを返す
getConfigVars() - 読み込まれた設定ファイル変数を返します。
getPluginsDir() - プラグインを格納するディレクトリを返す
getRegisteredObject() - 登録されたオブジェクトの参照を返します。
getTags() - テンプレートが使っているタグを返す
getTemplateDir() - テンプレートを格納するディレクトリを返す
getTemplateVars() - 割り当てられた変数の値を返します。
isCached() - テンプレートが有効なキャッシュを持つ場合にtrueを返します。
loadFilter() - フィルタプラグインを読み込みます。
Smarty::muteExpectedErrors() - Smarty が発する警告や注意を、意図的に無視する
registerCacheResource() - dynamically register CacheResources
registerClass() - テンプレートで使うクラスを登録する
registerDefaultPluginHandler() - 未定義のタグから呼ばれる関数を登録する
registerFilter() - 動的にフィルタを登録する
registerPlugin() - 動的にプラグインを登録する
registerObject() - テンプレート内で使用するオブジェクトを登録します。
registerResource() - リソースプラグインを動的に登録します。
setCacheDir() - レンダリングしたテンプレートの出力先ディレクトリを設定する
setCompileDir() - コンパイルしたテンプレートの出力先ディレクトリを設定する
setConfigDir() - 設定ファイルを格納するディレクトリを設定する
setPluginsDir() - プラグインを格納するディレクトリを設定する
setTemplateDir() - テンプレートを格納するディレクトリを設定する
templateExists() - 指定したテンプレートが存在するかどうかをチェックします。
unregisterCacheResource() - dynamically unregister a CacheResource plugin
unregisterFilter() - 動的にフィルタの登録を解除する
unregisterPlugin - 動的にプラグインの登録を解除する
unregisterObject() - 動的に登録されたオブジェクトを未登録にします。
unregisterResource() - 動的に登録されたリソースプラグインを未登録にします。
testInstall() - Smarty のインストール状態を調べる
15. キャッシュ
キャッシュのセットアップ
ページごとに複数のキャッシュ
キャッシュのグループ
出力のキャッシュ可能性の制御
テンプレートセクションのキャッシュ可能性
タグのキャッシュ可能性
変数のキャッシュ可能性
プラグインのキャッシュ可能性
Custom Cache Implementation
16. リソース
ファイルテンプレートリソース
$template_dir からテンプレートを取得する
特定の $template_dir からテンプレートを取得する
任意の場所からテンプレートを取得する
Windows のファイルパスについて
String Template Resources
Stream Template Resources
テンプレートリソースの継承
カスタムテンプレートリソース
17. 拡張機能
セキュリティ
テンプレートでの設定の変更
テンプレートの継承
ストリーム
オブジェクト
static クラス
プリフィルタ
ポストフィルタ
アウトプットフィルタ
18. プラグインによる Smarty の拡張
プラグインの動作原理
命名規約
プラグインの記述
テンプレート関数プラグイン
修飾子プラグイン
ブロック関数プラグイン
コンパイラ関数プラグイン
プリフィルタ/ポストフィルタプラグイン
アウトプットフィルタプラグイン
リソースプラグイン
インサートプラグイン
19. SmartyBC - 後方互換性を確保するためのラッパー
SmartyBC クラス
IV. 付録
20. トラブルシューティング
Smarty/PHP エラー
21. ヒント & 裏ワザ
空白の変数の扱い
変数のデフォルトの扱い
ヘッダテンプレートにタイトルの変数を渡す
日付
WAP/WML
コンポーネント化したテンプレート
E-mail アドレスを混乱させる
22. リソース
23. バグ

例目次

2.1. 必要な Smarty ライブラリファイル群
2.2. 手動で SMARTY_DIR 定数を定義する
2.3. ライブラリファイルの絶対パスを指定する
2.4. php.ini ファイルにライブラリへのパスを追加する
2.5. PHP スクリプト内での ini_set() によるインクルードパスの追加
2.6. ファイル構造
2.7. パーミッションおよびディレクトリへの書き込み権限の付与
2.8. /web/www.example.com/guestbook/templates/index.tpl
2.9. /web/www.example.com/docs/guestbook/index.php の編集
2.10. /php/includes/guestbook/setup.php
2.11. /web/www.example.com/guestbook/htdocs/index.php
3.1. テンプレート内のコメント
3.2. 変数
3.3. 関数の構文
3.4. 関数の属性の構文
3.5. 構文の例
3.6. 実用例
3.7. 演算の例
3.8. 自動リテラル機能の使用
3.9. デリミタを変更する例
4.1. 変数の例
4.2. 割り当てられた変数
4.3. 連想配列の値にアクセスする
4.4. インデックスによって配列にアクセスする
4.5. オブジェクトのプロパティにアクセスする
4.6. 変数のスコープの例
4.7. 設定ファイルの変数
4.8. リクエスト変数の表示
5.1. 修飾子の例
5.2. capitalize
5.3. cat
5.4. count_characters
5.5. count_paragraphs
5.6. count_sentences
5.7. count_words
5.8. date_format
5.9. default
5.10. escape
5.11. 別の例
5.12. indent
5.13. lower
5.14. nl2br
5.15. regex_replace
5.16. replace
5.17. spacify
5.18. string_format
5.19. strip
5.20. strip_tags
5.21. truncate
5.22. escape
5.23. upper
5.24. wordwrap
6.1. 修飾子の連結
7.1. シンプルな代入
7.2. 計算結果の代入
7.3. 配列要素の代入
7.4. 多次元配列の要素の代入
7.5. 配列要素の追加
7.6. 呼び出し元テンプレートのスコープでの代入
7.7. {append}
7.8. {assign}
7.9. nocache を指定した変数による {assign}
7.10. 計算結果の {assign}
7.11. 呼び出し元テンプレートのスコープでの {assign}
7.12. 現在のスコープツリーへの変数の {assign}
7.13. グローバル変数の {assign}
7.14. {assign} された変数への PHP スクリプトからのアクセス
7.15. シンプルな {block} の例
7.16. {block} を前に置く例
7.17. {block} を後に置く例
7.18. {$smarty.block.child} の例
7.19. {$smarty.block.parent} の例
7.20. 再帰的なメニューの例
7.21. name 属性を使用した {capture}
7.22. {capture} をテンプレート変数に格納
7.23. {capture} をテンプレート配列変数に格納
7.24. {config_load}
7.25. セクションを指定した {config_load} 関数
7.26. シンプルな {extends} の例
7.27. シンプルな {for} ループ
7.28. max 属性の使用
7.29. {forelse} の実行
7.30. シンプルな {foreach} ループ
7.31. 追加の key 変数の例
7.32. {foreach} で itemkey をネストする例
7.33. データベースでの {foreachelse} の例
7.34. index の例
7.35. iteration の例: is div by
7.36. iteration の例: is even/odd by
7.37. first プロパティの例
7.38. last プロパティの例
7.39. show プロパティの例
7.40. total プロパティの例
7.41. {break} の例
7.42. {continue} の例
7.43. 再帰的なメニュー {function} の例
7.44. {if} ステートメント
7.45. {if} のその他の例
7.46. シンプルな {include} の例
7.47. {include} に変数を渡す
7.48. {include} での parent スコープの使用
7.49. キャッシュを無効にした {include}
7.50. 個別のキャッシュ有効期限を設定した {include}
7.51. 強制的にキャッシュする {include}
7.52. {include} と変数への割り当て
7.53. さまざまな {include} リソースの例
7.54. {include_php} 関数
7.55. {insert} 関数
7.56. {ldelim}, {rdelim}
7.57. 別の Javascript の例
7.58. {literal} タグ
7.59. テンプレートの特定の部分のキャッシュを回避する
7.60. {php} タグ内での PHP コード
7.61. {php} タグで global を使用して変数を代入する
7.62. {section} でのシンプルな配列のループ
7.63. {section} で配列を割り当てない例
7.64. {section} の名前
7.65. {section} での連想配列のループ
7.66. {section} での loop 変数の使用
7.67. ネストした {section}
7.68. データベースを使用する {sectionelse} の例
7.69. {section} の index プロパティ
7.70. indexindex_next および index_prev プロパティ
7.71. セクションのプロパティ iteration
7.72. {section} プロパティ firstlast
7.73. {section} プロパティ loop
7.74. show プロパティ
7.75. total プロパティの例
7.76. {setfilter} タグ
7.77. {strip} タグ
7.78. {while} ループ
8.1. {counter}
8.2. {cycle}
8.3. {eval}
8.4. もうひとつの {eval} の例
8.5. {fetch} の例
8.6. {html_checkboxes}
8.7. データベースの例 (PEAR あるいは ADODB)
8.8. {html_image} の例
8.9. options 属性での連想配列
8.10. valuesouptut を個別の配列で指定したドロップダウン
8.11. データベース (ADODB あるいは PEAR) の例
8.12. <optgroup> を使用したドロップダウン
8.13. {html_radios} の最初の例
8.14. {html_radios} の二番目の例
8.15. {html_radios} - データベース (PEAR あるいは ADODB) の例
8.16. {html_select_date}
8.17. {html_select_date} の二番目の例
8.18. {html_select_time}
8.19. {html_table}
8.20. {mailto} のサンプルと、その結果
8.21. {math}
8.22. {textformat}
9.1. 設定ファイルの記述例
11.1. さまざまな文字符号化方式の設定
12.1. SMARTY_DIR
13.1. バーチャルホスト環境での $compile_id
13.2. 設定ファイル変数の配列
13.3. localhost での $debugging_ctrl
13.4. $default_config_handler_func
13.5. $default_template_handler_func
14.1. addConfigDir()
14.2. addPluginsDir()
14.3. addTemplateDir()
14.4. append
14.5. appendByRef
14.6. assign()
14.7. assignByRef()
14.8. clearAllAssign()
14.9. clearAllCache
14.10. clearAssign()
14.11. clearCache()
14.12. clearCompiledTemplate()
14.13. clearConfig()
14.14. compileAllConfig()
14.15. compileAllTemplates()
14.16. configLoad()
14.17. createData()
14.18. createTemplate()
14.19. display()
14.20. display() 関数にテンプレートリソースを指定した例
14.21. fetch()
14.22. Email の送信に fetch() を使用する
14.23. getCacheDir()
14.24. getCompileDir()
14.25. getConfigDir()
14.26. getConfigVars()
14.27. getPluginsDir()
14.28. getRegisteredObject()
14.29. getTags()
14.30. getTemplateDir()
14.31. getTemplateVars
14.32. isCached()
14.33. 複数のキャッシュを使用したテンプレートにおける isCached()
14.34. フィルタプラグインを読み込む
14.35. registerCacheResource()
14.36. テンプレートで使うクラスの登録
14.37. テンプレートで使う名前空間つきクラスの登録
14.38. デフォルトのプラグインハンドラの例
14.39. 関数プラグインの登録
14.40. ブロック関数プラグインの登録
14.41. 修飾子プラグインの登録
14.42. registerResource()
14.43. setCacheDir()
14.44. setCompileDir()
14.45. setConfigDir()
14.46. setPluginsDir()
14.47. setTemplateDir()
14.48. templateExists()
14.49. unregisterCacheResource()
14.50. 関数プラグインの登録の解除
14.51. unregisterResource()
14.52. testInstall()
15.1. キャッシュを有効にする
15.2. キャッシュごとに生存時間を設定する
15.3. $compile_check の無効化
15.4. isCached() を使用する
15.5. キャッシュをクリアする
15.6. display() に $cache_id を渡す
15.7. isCached() に cache_id を渡す
15.8. 特定のcache_idの全てのキャッシュをクリアする
15.9. $cache_id groups
15.10. テンプレートのセクションをキャッシュ対象外にする
15.11. タグの出力をキャッシュ対象外にする
15.12. キャッシュしない変数
15.13. プラグインの出力がキャッシュされるのを防ぐ
15.14. テンプレートの一節がキャッシュされるのを防ぐ
15.15. Smarty_CacheResource_Mysql
15.16. Smarty_CacheResource_Memcache
16.1. $template_dir からテンプレートを取得する例
16.2. $template_dir の特定の要素を指定する例
16.3. 任意の場所からテンプレートを取得する例
16.4. Windows のファイルパスを指定してテンプレートを使う例
16.5. Using templates from strings
16.6. Using templates from encoded strings
16.7. Stream from PHP
16.8. Stream from Template
16.9. PHPスクリプトからテンプレートの継承を使う
16.10. カスタムのテンプレートリソースを使う
17.1. Smarty_Security クラスの継承によるセキュリティポリシーの設定
17.2. Smarty_Security クラスのインスタンスによるセキュリティポリシーの設定
17.3. デフォルト設定でのセキュリティの有効化
17.4. テンプレートでの Smarty の設定の変更
17.5. テンプレートでのプラグインの登録
17.6. テンプレートの継承の例
17.7. テンプレートリソース extends: による継承
17.8. ストリーム変数
17.9. 登録または割り当てられたオブジェクトを使用する
17.10. static クラスへのアクセス方法
17.11. プリフィルタの使用
17.12. ポストフィルタを使用する
17.13. アウトプットフィルタの使用
18.1. 出力ありのテンプレート関数プラグイン
18.2. 出力なしのテンプレート関数プラグイン
18.3. シンプルな修飾子プラグイン
18.4. 更に複雑な修飾子プラグイン
18.5. ブロック関数プラグイン
18.6. シンプルなコンパイラ関数プラグイン
18.7. プリフィルタプラグイン
18.8. ポストフィルタプラグイン
18.9. アウトプットフィルタプラグイン
18.10. カスタムリソースの使用法
18.11. インサートプラグイン
19.1. SmartyBC クラスを使う
20.1. Smarty エラー
20.2. PHP パースエラー
20.3. その他共通のエラー
21.1. 変数が空白の時、&nbsp; を出力する
21.2. デフォルト値をテンプレート変数に割り当てる
21.3. ヘッダテンプレートにタイトルの変数を渡す
21.4. date_format の使用
21.5. フォームの日付要素をUNIXタイムスタンプ型に変換する
21.6. WML Content-Type ヘッダを出力するために {insert} を使用する
21.7. コンポーネント化したテンプレート
21.8. E-mail アドレスを混乱させる例