smarty模板引擎類簡單工作原理
站在用戶的角度思考問題,與客戶深入溝通,找到永新網站設計與永新網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網站建設、成都做網站、企業(yè)官網、英文網站、手機端網站、網站推廣、空間域名、網頁空間、企業(yè)郵箱。業(yè)務覆蓋永新地區(qū)。
利用Smarty 模板引擎類對模板文件中的變量進行編譯,編譯過程其實就是利用正則表達式翻譯成PHP文件。例如 模板文件中{$title}利用正則表達式找到并替換成 vars['title'];?>
自定義 Smarty 模板引擎類 smarty.class.php頁面
vars[$name]=$value; } //加載指定的模板 并顯示 //有一個參數是模板的文件名 public function display($tplname){ $comfile = "./comps/".$tplname."_com.php"; $tplname = "./templates/".$tplname; //編譯文件不存在 或者模板文件有變化 才需要編譯 if(!file_exists($comfile) || filemtime($tplname)>filemtime($comfile)){ $html = file_get_contents($tplname); //要替換的部分{title} $reg = '/\{\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*\}/'; //變量正則表達式[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* //替換后的部分vars['title'];?> $rep = "vars['\\1'];?>"; $newhtml = preg_replace($reg, $rep, $html); file_put_contents($comfile, $newhtml); } include $comfile; } }
調用模板頁面 index.php
assign('title', $title); $smarty->assign('content', $content); var_dump($smarty); //加載指定的模板 并顯示 $smarty->display('c.php');
模板文件頁 c.php頁面
{$title} {$title}
{$content}
輸出結果
object(Smarty)[1] private 'vars' => array (size=2) 'title' => string 'This is a test' (length=14) 'content' => string 'This is content ......' (length=22) This is a test This is content ......