自定义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_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>

PS:这里推荐几款本站的格式化/美化/转换工具可以帮助你整理杂乱无章的代码,相信大家在以后的开发中能够用得上:

php代码在线格式化美化工具:
http://tools.jb51.net/code/phpformat

JavaScript代码美化/压缩/格式化/加密工具:
http://tools.jb51.net/code/jscompress

在线XML格式化/压缩工具:
http://tools.jb51.net/code/xmlformat

JSON代码格式化美化工具:
http://tools.jb51.net/code/json

在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.jb51.net/code/jsoncodeformat

sql代码在线格式化美化工具:
http://tools.jb51.net/code/sqlcodeformat

更多关于Smarty相关内容感兴趣的读者可查看本站专题:《smarty模板入门基础教程》、《PHP模板技术总结》、《PHP基于pdo操作数据库技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。

时间: 2024-07-31 22:12:12

自定义min版smarty模板引擎MinSmarty.class.php文件及用法的相关文章

自定义min版smarty模板引擎MinSmarty.class.php文件及用法_php实例

本文实例讲述了自定义的min版smarty模板引擎MinSmarty.class.php文件.分享给大家供大家参考,具体如下: 一.smarty的优点 smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一.它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离.简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻

《Android和PHP开发最佳实践 》一3.5 认识Smarty模板引擎

3.5 认识Smarty模板引擎 如果你说学过PHP而没学过Smarty模板引擎,我相信所有的面试官都会觉得你在撒谎.虽然PHP语言本身就可以嵌入到HTML页面中去进行数据展现,但是这样做我们不仅需要书写大量的<?php ?>标签,而且在某些地方还需要嵌入大量的冗余代码,另外也不利于逻辑的解耦和分离.所以,在项目中我们还是需要一个专门的模板引擎,而Smarty就是PHP语言在这个领域的不二选择了. 目前,最新的Smarty版本已经出到3.x,应该说与2.x版本相比做了很大的改进,接下来简单介绍

smarty模板引擎之分配数据类型

 这篇文章主要介绍了smarty模板引擎之分配数据类型,实例分析了smarty模板引擎数据类型的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了smarty模板引擎之分配数据类型用法.分享给大家供大家参考.具体分析如下: 一.分配基本数据 ? 1 2 3 4 5 6 7 8 9 10 11 //分配基本数据 $smarty->assign("str","hello smarty!"); $smarty->assign(&quo

smarty模板引擎之配置文件数据和保留数据

 这篇文章主要介绍了smarty模板引擎之配置文件数据和保留数据的方法,实例分析了smarty模板引擎配置文件数据及获取数据的具体技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了smarty模板引擎之配置文件数据和保留数据的方法.分享给大家供大家参考.具体如下: 一.如何让模板直接从配置文件中取出数据 1.使用场合 当某个变量值,不希望直接写死到程序中(通过smarty分配),就可以通过配置文件来获取. 2.写配置文件 新建文件夹:config 新建文件名:my.ini或

smarty模板引擎之内建函数用法

 这篇文章主要介绍了smarty模板引擎之内建函数用法,实例分析了smarty中foreach函数.if...else....if...elseif...elseif...else...等内建函数的使用方法,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了smarty内建函数的使用方法.分享给大家供大家参考.具体如下: in-build(内建),在smarty模板中,提供了很多内建的函数库,具体使用可以参考smarty中文手册chm版本. 1.foreach函数 操作数组如下:

smarty模板引擎从php中获取数据的方法_php实例

本文实例讲述了smarty模板引擎从php中获取数据的方法.分享给大家供大家参考.具体如下: smarty可以分配($smarty->assign)的变量类型:所有php支持的数据类型--基本数据类型.复合数据类型.特殊数据类型(具体见smarty相关手册). 操作/显示文件:index.php 复制代码 代码如下: <?php //创建smarty对象 require_once("./libs/Smarty.class.php"); $smarty = new Smart

thinkphp-[Thinkphp]多模块多域名下配置 Smarty 模板引擎无效。

问题描述 [Thinkphp]多模块多域名下配置 Smarty 模板引擎无效. 下面是配置 如果我把APP_SUB_DOMAIN_DEPLOY去掉是可以启动Smart的. Application/Common/Conf/config.php return array( //'配置项'=>'配置值' 'TMPL_ENGINE_TYPE'=>'Smarty', 'MODULE_ALLOW_LIST' => array( 'Pc', 'Wap', ), 'DEFAULT_MODULE' =&g

深入浅出之Smarty模板引擎工作机制(一)

深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解. 在没有使用Smarty模板引擎的情况下,我们都是将PHP程序和网页模板合在一起编辑的,好比下面的源代码: <?php$title="深处浅出之Smarty模板引擎工作机制";$content="Smarty模板引擎原理流程图";$auth="MarcoF

深入浅出之Smarty模板引擎工作机制(二)

源代码下载地址:深入浅出之Smarty模板引擎工作机制 接下来根据以下的Smarty模板引擎原理流程图开发一个自己的模板引擎用于学习,以便加深理解.   Smarty模板引擎的原理,其实是这么一个过程: 把模板文件编译成php文件,然后每次都去读取下模板的修改时间,没有修改就不编译.然后include这个"编译"后的PHP文件. 所谓编译也就是模板用正则替换成含PHP代码的过程. 实际上并不会每次请求都编译,所以性能尚可.  模板文件和php程序文件经过模板引擎的编译后合成为一个文件,