资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
自定义min版smarty模板引擎MinSmarty.class.php文件及用法_ 本文实例讲解并描述了自定义的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_varstitle;? $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 l1/DTD/xhtml1-transitional.dtd html xmlns=l head meta http-equiv=Content-Type content=text/html; charset=utf-8 / title$title/title /head body $content /body /html 盼望本文所述对大家基于smarty模板的PHP程序设计有所关心。 .
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号