smarty.class.php,自定义min版smarty模板引擎MinSmarty.class.php文件及用法
本文實(shí)例講述了自定義的min版smarty模板引擎MinSmarty.class.php文件。分享給大家供大家參考,具體如下:
一、smarty的優(yōu)點(diǎn)
smarty是一個(gè)使用PHP寫出來(lái)的模板引擎,是目前業(yè)界最著名的PHP模板引擎之一。它分離了邏輯代碼和外在的內(nèi)容,提供了一種易于管理和使用的方法,用來(lái)將原本與HTML代碼混雜在一起PHP代碼邏輯分離。簡(jiǎn)單的講,目的就是要使PHP程序員同前端人員分離,使程序員改變程序的邏輯內(nèi)容不會(huì)影響到前端人員的頁(yè)面設(shè)計(jì),前端人員重新修改頁(yè)面不會(huì)影響到程序的程序邏輯,這在多人合作的項(xiàng)目中顯的尤為重要。
二、寫一個(gè)簡(jiǎn)單的smarty模版類
具體代碼如下:
class MinSmarty{
// 模版文件的路徑
var $template_dir = "./templates/";
// 模版文件被替換后的文件 命名格式為com_對(duì)應(yīng)的tpl.php
var $complie_dir = "./templates_c/";
// 存放變量值
var $tpl_vars = array();
// 這里使用兩個(gè)方法實(shí)現(xiàn)assign 和 display
function assign($tpl_var,$var=NULL){
if($tpl_var!=NULL){
$this->tpl_vars[$tpl_var]=$var;
}
}
// 這里編寫display方法的實(shí)現(xiàn)
function display($tpl_file){
// 讀取這個(gè)模版文件->替換可以運(yùn)行的php文件(編譯后文件)
$tpl_file_path=$this->template_dir.$tpl_file; // 模版文件的路徑
$complie_file_path=$this->complie_dir."com_".$tpl_file.".php"; //編譯后的文件路徑
// 判斷文件是否存在
if(!file_exists($tpl_file_path)){
return false;
}
// 不讓每次執(zhí)行都生成編譯文件
if(!file_exists($complie_file_path) || filemtime($tpl_file_path)>filemtime($complie_file_path)){
$fp1_file_con=file_get_contents($tpl_file_path); // 獲取模版文件的全部?jī)?nèi)容
// 這里進(jìn)行正則替換把 模版文件中的代碼 {$title} 替換成 <?php echo $this->tpl_vars['title'];? >
$pattern=array(
'/\{\s*\$([a-zA-Z_][a-zA-Z0-9_]*)\s*\}/i'
);
$replace=array(
'<?php echo $this->tpl_vars["${1}"];?>'
);
$new_str=preg_replace($pattern,$replace,$fp1_file_con); // 替換后的內(nèi)容
file_put_contents($complie_file_path,$new_str); // 替換后的內(nèi)容生成一個(gè)php文件
}
// 引入編譯后的文件
include_once("$complie_file_path");
}
}
?>
下面的代碼是對(duì)該類的測(cè)試
intro.php代碼如下:
include_once("MySmarty.class.php");
$title="這里是標(biāo)題";
$content="這里是內(nèi)容111111";
$MySmarty=new MySmarty();
$MySmarty->assign("title",$title);
$MySmarty->assign("content",$content);
$MySmarty->display("intro.tpl");
?>
模版如下:
intro.tpl:
{$title}{$content}
PS:這里推薦幾款本站的格式化/美化/轉(zhuǎn)換工具可以幫助你整理雜亂無(wú)章的代碼,相信大家在以后的開(kāi)發(fā)中能夠用得上:
php代碼在線格式化美化工具:http://tools.ddpool.cn/code/phpformat
JavaScript代碼美化/壓縮/格式化/加密工具:http://tools.ddpool.cn/code/jscompress
在線XML格式化/壓縮工具:http://tools.ddpool.cn/code/xmlformat
JSON代碼格式化美化工具:http://tools.ddpool.cn/code/json
在線XML/JSON互相轉(zhuǎn)換工具:http://tools.ddpool.cn/code/xmljson
json代碼在線格式化/美化/壓縮/編輯/轉(zhuǎn)換工具:http://tools.ddpool.cn/code/jsoncodeformat
sql代碼在線格式化美化工具:http://tools.ddpool.cn/code/sqlcodeformat
希望本文所述對(duì)大家基于smarty模板的PHP程序設(shè)計(jì)有所幫助。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的smarty.class.php,自定义min版smarty模板引擎MinSmarty.class.php文件及用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 宏碁宣布进军电动自行车市场 新品续航达1
- 下一篇: 恒大汽车子公司预计将裁员95% 无新投资