第一次在這裡帖碼,此份代碼主要是PHP模板引擎技術研究,目前只有編譯版本,希望各位多多提供意見和優化技巧
三個文件組成,不知道如何以文件形式,只能複製了,抱歉!
index.php是設定文件,大夥看看就明白
index.html一些使用的範例
Templates.class.php基底類別 晚點發布下有快取的完善版本,但希望沒有在寫快取一些,有朋友或是高手指點下,這個模板引擎只要處理編譯和快取即可,其餘考慮暫時不考慮,當然正規替換模式還要增加f,w之類。 。 。 希望有朋友可以研究研究本人Q:
76376931 Copy_3_of_Templates.class.php 檔案是已經增加快取方式的,再次刷新頁面不會產生緩存,未考慮專案中某些頁面是否要緩存,以後用該類別在逐步添加,希望有朋友可以一起交流!
-
header('Content-Type:text/html;charset=utf-8');
- define('ROOT_HOST',dirname(__FILE__) );
- define('HTML_DIR',ROOT_HOST.'/moban/');
- define('COMPILED_DIR',ROOT_HOST.'/data/compiled/');
- define('CACHE_DIR',ROOT_HOST .'/data/cache/');
- //是否開啟緩衝區
- define('NEW_CACHE', false);
- //判斷是否開啟緩衝區
- NEW_CACHE ? ob_start() : null;
- //引入模板類別
- require ROOT_HOST.'/lib/Templates.class.php';
-
- $_moban = new Templates();
-
- $array = array(a=>'你好呀',b=>'我不是很好,但我很想你',c=>'你都在家裡了,怎麼還想我呀?');
- $ xcvu = '你好啊,這是一個XCVU';
- $zmq = "hi";
- $title = "這是一個模板引擎自訂方法!";
- $ling = "因為正在修改一個「函數」????????????????";
-
- $_moban->assign('ling', $ling);
- $_moban-> assign('title',$title);
- $_moban->assign('zmq', $zmq);
- $_moban->assign('xcvu', $xcvu);
- $_moban- >assign('abc',5>4);
- $_moban->assign('array', $array);
- $_moban->display('index.html');
-
- ?>
-
複製程式碼
-
-
-
-
-
- BBBasd不知道說點什麼好,又想說點什麼
-
-
-
-
-
-
1號
-
-
2號
-
-
-
- ........
-
-
-
-
-
複製程式碼
-
/* 關於:Richard.z
- * 網站:http://www.zmq.cc
- * 電子郵件:code@zmq .cc
- * 日期:2013/01/02/17:30
- * */
- 類別範本{
- private $_CaChe;
- private $_Compiled;
- primlfate $
- private $_FileVar;
- private $_KeyArr = array();
-
- public function __construct(){
- if(!is_dir(HTML_DIR) ||PI_DIR) || is_dir(CACHE_DIR)){
- exit('您的目錄不存在!');
- }
- }
-
- public function allocate($_var, $_value){
- if (isset($_var) && !empty($_var)){
- $this->_KeyArr[$_var] = $_value;
- }else{
- exit('請設定您的值!' );
- }
- }
-
- public function display($_File){
- //設定模板的變數
- $this->_HtmlFile = HTML_DIR.$_File
- //設定編譯
- $this->_Compiled = COMPILED_DIR.md5($_File).$_File.'.php';
- //設定快取
- $this->_CaChe = CACHE_DIR. md5($ _File).$_File.'.html';
- //判斷模板是否存在
- if(!file_exists($this->_HtmlFile)){
- exit('模板檔案不存在');
- }
- //賦值與判斷讀取
- if(!$this->_FileVar = file_get_contents($this->_HtmlFile)){
- exit('模板檔案讀取錯誤!') ;
- }
- //如果編輯編譯檔案日期
- date HtmlFile
- if(!file_exists($this->_Compiled) || filemtime($this->_Compiled) _HtmlFile)){
- $this->Set_Comilled ();
- }
- //包含已編譯
- include $this->_Compiled;
- }
-
- //公用函數
- public function Set_Comilled(){
- $this->SetArr();
- $this->SetInclude();
- if(!file_put_contents($this->__iled, $this-Compiled, $this-Compiled, $this-Compiled >_FileVar)){
- exit('編譯檔產生錯誤! ');
- }
- }
- //arr
- private function SetArr(){
- $_preaa = array(
- '//',
- '//',
- '// ',
- '//',
- '/ /',
- '//',
- '/ /',
- '//');
- $_prebb = array(
- '_KeyArr["$1 "];?>',
- '_KeyArr["$1"]) {?>',
- '',
- ' php } else { ?>',
- '_KeyArr["$1"] as $$2=>$$3) { ?>; ',
- '',
- '',
- '' );
- $this->_FileVar = preg_replace($_preaa, $ _prebb, $this->_FileVar);
- if(preg_match($_preaa[0], $this->_FileVar)){
- $this->_FileVar = $this->SetArr($this->_FileVar );
- }
- }
-
- //包含
- 私有函數SetInclude() {
- $_preFile = '//';
- if(preg_match($_preFile, $this ->_FileVar,$_File)){
- if(!file_exists($_File[1]) || empty($_File)){
- exit('你的包含檔案錯誤!');
- }
- $this->_FileVar = preg_replace($_preFile, "", $this->_FileVar);
- }
- }
-
- }
?>
複製程式碼
-
/* 關於:Richard.z
- * 網站:http://www.zmq.cc
- * 電子郵件:code@zmq .cc
- * 日期:2013/01/02/17:30 || 2013/01/14/21:35
- * */
- 類別範本{
- private $_CaChe;
-
- private $_Compiled;
- private $_HtmlFile;
- private $_FileVar;
- private $_KeyArr = array();
- public f function __cone_if if(isset($_var) && ! empty($_var)){
- $this->_KeyArr[$_var] = $_value;
- }else{
- exit('請設定您的值!');
- }
- }
-
- public function display($_File){
- //設定模板的變數
- $this- >_HtmlFile = HTML_DIR.$_File;
- //設定編譯
- $this->_Compiled = COMPILED_DIR.md5($_File).$_File.'.php';
- //設定快取
- $this->_CaChe = CACHE_DIR.md5($_File).$_File .'.html';
- //判斷模板是否存在
- if(!file_exists($this->_HtmlFile)){
- exit('範本檔案不存在');
- }
- // 賦值與判斷讀取
- if(!$this->_FileVar = file_get_contents($this->_HtmlFile)){
- exit ('範本檔案讀取錯誤!');
- }
- //如果編輯編譯檔案日期 if(!file_exists($this->_Compiled) || filemtime($this- >_Compiled) _HtmlFile)){
- $this->Set_Comilled ();
- }
- //包含已編譯
- include $this->_Compiled;
- $this->SetCaChe();
- }
-
- //如果要再產生則設定快取檔案
- private function SetCaChe(){
- if(!file_exists($this->_CaChe ) || filemtime($this->_CaChe) _Compiled)){
- if(NEW_CACHE){
- file_put_contents($this->_CaChe, ob_get_contents()); ();
- include $this->_CaChe ;
- }
- }
- }
-
- //公共函數
- public function Set_Comilled(){
- $🎜> public function Set_Comilled(){
- $this-this- >SetArr();
- $this- >SetIninclude();
- if(!file_put_contents($this->_Compiled, $this->_FileVar)){
- exit('編譯檔案產生錯誤! ');
- }
- }
- //arr
- 私有函式SetArr(){
- $_preaa = array(
- '//' ,
- '//',
- '// ',
- '//',
- '//',
- '//',
- '/ /',
- '//');
- $_prebb = array(
- '_KeyArr["$1 "];?>',
- '_KeyArr["$1"]) {?>',
- '< ;?php } ?>',
- '',
- '_KeyArr["$1"] as $$2= >$$3) { ?>',
- '',
- '',
- '');
- $this->_FileVar = preg_replace($_preaa, $ _prebb, $this->_FileVar);
- if(preg_match($_preaa[0], $this->_FileVar)){
- $this->_FileVar = $this->SetArr($this->_FileVar );
- }
- }
-
- //包含
- 私有函數SetInclude(){
- $_preFile = '//';
- if(preg_match($_preFile, $this->_FileVar,$_File)){
- if(!file_exists($_File[1]) ||空( $_File)){
- exit('你的包含檔案錯誤!');
- }
- $this->_FileVar = preg_replace($_preFile, "", $this->_FileVar);
- }
- }
-
- }
- ?>
-
-
- 複製程式碼
-
-
-
複製程式碼
複製程式碼 |