小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

PHP模板引擎原理

 quasiceo 2014-05-02

PHP模板引擎原理  

2011-11-28 16:31:05|  分類: PHP資料 |舉報(bào) |字號(hào) 訂閱

模板引擎實(shí)現(xiàn)的原理

訪問php文件, php文件會(huì)去加載模板引擎,通過模板引擎去加載模板然后替換模板里面的變量 然后生成一個(gè)編譯文件 

最后將該編譯文件導(dǎo)入 訪問的php文件中輸出     第二次訪問的時(shí)候 如果 緩存文件存在或者沒有被改動(dòng)則直接 導(dǎo)入緩存文件 輸出

否則重新編譯

自定義的一個(gè)模板引擎 mytpl.class.php

<?php

class mytpl{

//指定模板目錄

private $template_dir;

//編譯后的目錄

private $compile_dir;

//讀取模板中所有變量的數(shù)組

private $arr_var=array();

//構(gòu)造方法

public function __construct($template_dir="./templates",$compile_dir="./templates_c")

{

$this->template_dir=rtrim($template_dir,"/")."/";

$this->compile_dir=rtrim($compile_dir,"/")."/";

}

//模板中變量分配調(diào)用的方法

public function assign($tpl_var,$value=null){

$this->arr_var[$tpl_var]=$value;

}

//調(diào)用模板顯示

public function display($fileName){

$tplFile=$this->template_dir.$fileName;

if(!file_exists($tplFile)){

return false;

}

//定義編譯合成的文件  加了前綴 和路徑 和后綴名.php

$comFileName=$this->compile_dir."com_".$fileName.".php";

if(!file_exists($comFileName) || filemtime($comFileName)< filemtime($tplFile)){//如果緩存文件不存在則 編譯  或者文件修改了也編譯

     $repContent=$this->tmp_replace(file_get_contents($tplFile));//得到模板文件 并替換占位符 并得到替換后的文件

    file_put_contents($comFileName,$repContent);//將替換后的文件寫入定義的緩存文件中

}

 

//包含編譯后的文件

include $comFileName;

}

//替換模板中的占位符

private function tmp_replace($content){

$pattern=array(

'/\<\!--\s*\$([a-zA-Z]*)\s*--\>/i'

);

$replacement=array(

'<?php echo $this->arr_var["${1}"]; ?>'

);

$repContent=preg_replace($pattern,$replacement,$content);

return $repContent;

}

}

//使用該模板引擎

<?php

//導(dǎo)入模板引擎類

include"mytpl.class.php";

$title="this is title";

$content="this is content";

$tpl=new mytpl();

//分配變量

$tpl->assign("title",$title);

$tpl->assign("content",$content);

//指定處理的模板

$tpl->display("tpl.html");

?>

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多