1. 程式人生 > >帶個人備註的,模板->編譯文件->緩存文件

帶個人備註的,模板->編譯文件->緩存文件

數據 創建 lib 路徑 arr load pty 譯文 isp

<?php

//模板類
class Templates {
//我想通過一個字段來接受變量
//但是又不知道有多少個變量要接受。
//所以我們要動態的接受變量
//可以通過數組來實現這個功能。
private $_vars = array();
//保存系統變量
private $_config = array();

//創建一個構造方法,來驗證各個目錄是否存在
public function __construct() {
if (!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR) || !is_dir(CACHE)) {
exit(‘ERROR:模板目錄或編譯目錄或緩存目錄不存在!請手工設置!‘);
}
//保存系統變量
$_sxe = simplexml_load_file(ROOT_PATH.‘/config/profile.xml‘);
$_tagLib = $_sxe->xpath(‘/root/taglib‘);
foreach ($_tagLib as $_tag) {
$this->_config["$_tag->name"] = $_tag->value;
}
}

//assign()方法,用於註入變量
public function assign($_var, $_value) {
//$_var用於同步模板裏的變量名 例如index.php是name 那麽index.tpl就是{$name}
//$_value值表示的是index.php裏的$_name的值,就是 ‘李炎恢‘
if (isset($_var) && !empty($_var)) {
//$this->_vars[‘name‘]
$this->_vars[$_var] = $_value;
} else {
exit(‘ERROR:請設置模板變量‘);
}
}

//display()方法
public function display($_file) {
//給include進來的tpl傳一個模板操作的對象
$_tpl = $this;
//設置模板的路徑
$_tplFile = TPL_DIR.$_file;
//判斷模板是否存在
if (!file_exists($_tplFile)) {
exit(‘ERROR:模板文件不存在!‘);
}
//編譯文件
$_parFile = TPL_C_DIR.md5($_file).$_file.‘.php‘;
//緩存文件
$_cacheFile = CACHE.md5($_file).$_file.‘.html‘;
//當第二次運行相同文件的時候,直接載入緩存文件,避開編譯
if (IS_CACHE) {
//緩存文件和編譯文件都要存在
if (file_exists($_cacheFile) && file_exists($_parFile)) {
//判斷模板文件是否修改過,判斷編譯文件是否修改過
if (filemtime($_parFile) >= filemtime($_tplFile) && filemtime($_cacheFile) >= filemtime($_parFile)) {
//載入緩存文件
include $_cacheFile;
return;
}
}
}
//當編譯文件不存在,或者模板文件修改過,則生成編譯文件
if (!file_exists($_parFile) || filemtime($_parFile) < filemtime($_tplFile)) {
//引入模板解析類
require_once ROOT_PATH.‘/includes/Parser.class.php‘;
$_parser = new Parser($_tplFile); //模板文件
$_parser->compile($_parFile); //編譯文件
}
//載入編譯文件
include $_parFile;
if (IS_CACHE) {
//獲取緩沖區內的數據,並且創建緩存文件
file_put_contents($_cacheFile,ob_get_contents());
//清除緩沖區(清除了編譯文件加載的內容)
ob_end_clean();
//載入緩存文件
include $_cacheFile;
}
}

//創建create方法,用於header和footer這種模塊模板解析使用,而不需要生成緩存文件
public function create($_file) {
//設置模板的路徑
$_tplFile = TPL_DIR.$_file;
//判斷模板是否存在
if (!file_exists($_tplFile)) {
exit(‘ERROR:模板文件不存在!‘);
}
//編譯文件
$_parFile = TPL_C_DIR.md5($_file).$_file.‘.php‘;
//當編譯文件不存在,或者模板文件修改過,則生成編譯文件
if (!file_exists($_parFile) || filemtime($_parFile) < filemtime($_tplFile)) {
//引入模板解析類
require_once ROOT_PATH.‘/includes/Parser.class.php‘;
$_parser = new Parser($_tplFile); //模板文件
$_parser->compile($_parFile); //編譯文件
}
//載入編譯文件
include $_parFile;
}







}
?>  

帶個人備註的,模板->編譯文件->緩存文件