2019-07-24 Smarty模板引擎的简单应用
2019-07-24 09:20:19来源:博客园 阅读 ()
smarty是什么?
Smarty是一个使用PHP写出来的模板引擎,是业界最著名的PHP模板引擎之一。Smarty分离了逻辑代码和外在的内容,提供一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。Smarty工作的目的是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。简单来说:Smarty是PHP的一个引擎模板,可以更好的进行逻辑与显示的分离,即我们常说的MVC,这个引擎的作用就是将C分离出来。【mvc 三层架构思想;m=》model模型、v=》view视图、c=》controller控制】
smarty有何优点?
1.速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。
2.编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)
3.缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。
4.插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。
5.模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
不适合使用Smarty的地方
需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty会使模板处理速度变慢。
小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用Smarty会在一定程度上丧失PHP开发迅速的优点。
如何使用smarty?
首先我们去下载一个smarty的压缩包。下载地址https://codeload.github.com/smarty-php/smarty/zip/v3.1.33,然后我们得到了一个压缩包,进行解压后,里面有如下文件:
我们只需要其中的libs文件,注意不要对其中的文件进行任何的修改。直接将其拖拽至你创建的网站根目录下。并且需要再创建几个文件夹:cache(存放缓存文件)、templates(存放模板文件)、templates_c(存放混编文件)、configs(存放配置文件);这几个文件夹只是默认名称,你也可以根据需要进行修改,但要注意如果你修改了文件夹名称,需要打开libs文件夹下的Smarty.class.php文件,对其中的文件夹路径进行修改。如下找到文件夹名称修改即可:
做完上述步骤后,在根目录下创建PHP逻辑代码文件,此处我取名为index.php,并打开,写入下面的代码:
//1.引入smarty类 require './libs/Smarty.class.php'; //2.实例化smarty类 $smarty = new smarty(); //var_dump($smarty);//打印一下 看是否有结果 //3.根据业务连接数据库 $con = mysql_connect('127.0.0.1','root','root'); mysql_query('use news'); mysql_query('set names utf8'); //4.sql语句 $sql = "select * from news"; $res = mysql_query($sql); while ($row = mysql_fetch_assoc($res)) { $arr[]=$row; } //print_r($arr);//打印一下 看是否有结果 //5.发送数据 $smarty->assign('news',$arr); //6.显示视图页面 要显示哪个页面就写哪个页面路径 $smarty->display('news_list.html');
上述代码中,因为我们读取的是数据库中的数据,因此需要连接数据库,查询信息,并把结果读取出来,在这里建库根据自己的业务建立就可以了。我只是建立了一个简单的新闻表news。
第五部分,用$smarty这个对象指向assign给变量赋值。第六部分,指向display展示视图。
在templates文件夹下创建视图文件,名称要与php代码中的视图名称一致。写入html代码即可。
<html> <head><title>新闻列表</title></head> <meta charset='utf-8'> <body> <table border="1px"> <th>新闻id</th> <th>新闻title</th> <th>新闻content</th> <th>新闻time</th> {foreach $news as $k=>$v} <tr> <td>{$v['id']}</td> <td>{$v['title']}</td> <td>{$v['content']}</td> <td>{$v['time']}</td> </tr> {/foreach} </table> </body> </html>
注意,PHP代码中第五步发送的数据名称与HTML中的要一致,在HTML中写变量用{ }包裹即可。
最终效果如下:
同时,在templates_c文件夹中也生成了一个混编文件:
原文链接:https://www.cnblogs.com/zhangxu-fasu/p/11237160.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Laravel中的Blade模板引擎示例详解 2019-12-27
- Thinkphp模板中使用自定义函数的方法 2019-11-15
- php使用Smarty时的注意事项及访问变量方式 2019-08-23
- 2019-07-24 PHP中mysql_fetch_assoc 和 mysql_fetch_array 2019-07-24
- 详解phplib模板使用过程及运行原理 2019-06-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash