PHP の Smarty テンプレート エンジンの最初の紹介
PHP は埋め込み HTML スクリプト言語であり、HTML と PHP コード、いわゆるロジック層とプレゼンテーション層を分離することがテンプレート エンジンの目的です。この目標を達成するには、テンプレート エンジンに次の機能が必要です: 1. 変数を保存する; 2. テンプレート ファイルを読み取る; 3. 最初の 2 つを結合して出力を生成する。コードは次のとおりです:
test01.php
$name='xiaoshenge';
?>
test02.php
test name=
test03.php
include'test01.php';
include'test02.php;
?>
もちろん、これは PHP テンプレート エンジンの機能を実装する方法の単純なシミュレーションです。PHP オープン ソース コミュニティで有名な Smarty は、上記の機能をカプセル化しています。データを保存 -> テンプレートをロード -> コンパイルして出力ファイルを生成します。 Smarty の具体的なアプリケーションについてはマニュアルを参照してください。ここでは機能原理のみを説明します。
ところで: Smarty キャッシュで発生した問題を記録してください。
smarty のキャッシュが有効になっている場合、プログラムでは、smarty の is_cache() 関数を使用して、キャッシュ ファイルの有効期限が切れているかどうかを検出します。有効期限が切れると、キャッシュが更新されます。有効期限が切れていない場合は、キャッシュ ファイルが自動的に呼び出され、コンパイル プロセスが省略されます。キャッシュの有効期限の検出は、テンプレート ファイルが指定されたライフ サイクル内で変更されたかどうかを確認することです。ここでの変更は、テンプレート ファイルの内容ではなく、ファイルの最新の変更時刻を検出することによって行われます。
テンプレート ファイル全体がキャッシュされないようにします:
index.php:
require('Smarty.class.php');
$smarty = new Smarty;
$ Smarty ->caching = true;
function Smarty_block_dynamic($param, $content, &$smarty) {
return $content;
}
$smarty->register_block(' Dynamic ', 'smarty_block_dynamic', false);
$smarty->display('index.tpl');
index.tpl:
ページが作成されました: {"0"|date_format:"%D %H:%M:%S"}
{dynamic}
現在: {"0"|date_format:"%D % H:%M:%S"}
...他のことをしてください...
{/dynamic}
このページをリロードすると、次のことがわかります。2 つの日付は次のとおりです。違う。 1 つは「動的」、もう 1 つは「静的」です。 {dynamic}...{/dynamic} の間は何でもできますが、ページの残りの部分のようにキャッシュされないように注意してください。