您好,登錄后才能下訂單哦!
這篇文章主要介紹了如何自定義min版smarty模板引擎MinSmarty.class.php文件,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
具體如下:
一、smarty的優點
smarty是一個使用PHP寫出來的模板引擎,是目前業界最著名的PHP模板引擎之一。它分離了邏輯代碼和外在的內容,提供了一種易于管理和使用的方法,用來將原本與HTML代碼混雜在一起PHP代碼邏輯分離。簡單的講,目的就是要使PHP程序員同前端人員分離,使程序員改變程序的邏輯內容不會影響到前端人員的頁面設計,前端人員重新修改頁面不會影響到程序的程序邏輯,這在多人合作的項目中顯的尤為重要。
二、寫一個簡單的smarty模版類
具體代碼如下:
<?php class MinSmarty{ // 模版文件的路徑 var $template_dir = "./templates/"; // 模版文件被替換后的文件 命名格式為com_對應的tpl.php var $complie_dir = "./templates_c/"; // 存放變量值 var $tpl_vars = array(); // 這里使用兩個方法實現assign 和 display function assign($tpl_var,$var=NULL){ if($tpl_var!=NULL){ $this->tpl_vars[$tpl_var]=$var; } } // 這里編寫display方法的實現 function display($tpl_file){ // 讀取這個模版文件->替換可以運行的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; } // 不讓每次執行都生成編譯文件 if(!file_exists($complie_file_path) || filemtime($tpl_file_path)>filemtime($complie_file_path)){ $fp1_file_con=file_get_contents($tpl_file_path); // 獲取模版文件的全部內容 // 這里進行正則替換把 模版文件中的代碼 {$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); // 替換后的內容 file_put_contents($complie_file_path,$new_str); // 替換后的內容生成一個php文件 } // 引入編譯后的文件 include_once("$complie_file_path"); } } ?>
下面的代碼是對該類的測試
intro.php代碼如下:
<?php include_once("MySmarty.class.php"); $title="這里是標題"; $content="這里是內容111111"; $MySmarty=new MySmarty(); $MySmarty->assign("title",$title); $MySmarty->assign("content",$content); $MySmarty->display("intro.tpl"); ?>
模版如下:
intro.tpl:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>{$title}</title> </head> <body> {$content} </body> </html>
感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何自定義min版smarty模板引擎MinSmarty.class.php文件”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。