在开始教程前,我觉得有必要先了解下mvc,因为了解mvc可以让我们更好的理解smarty模板引擎。
1、什么是MVC?
mvc的英文全名是,Model View Controller,它是一种开发模式。其核心思想是:数据的输入、数据的处理、数据显示的强制分离。
Model(模型)表示应用程序核心(比如数据库记录列表)。是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)显示数据(数据库记录)。是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)处理输入(写入数据库记录)。是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
本文介绍的smarty主要在view(视图)上工作,完成数据的显示。
2、Smarty的优点
① 速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。
② 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的方式,在下一次访问模板时将WEB请求直接转换到这个文件中,而不再进行模板重新编译(在源程序没有改动的情况下)
③ 缓存技术:Smarty选用的一种缓存技术,它可以将用户最终看到的HTML文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件。
④ 插件技术:Smarty可以自定义插件。插件实际就是一些自定义的函数。
⑥ 模板中可以使用if/elseif/else/endif。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
3、Smarty的使用
a、下载最新的smarty。
b、下载的smarty内核文件夹libs,放入php网站文件夹内。(安全起见,可自行修改文件夹名,如改名为smarty)
c、分别在网站目录下建立templates、templates_c、configs、cache四个文件夹。
smarty的目录结构
d、在templates/目录下写模板,建立index.htm内容为:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> {$world} </body> </html>
然后再写一个PHP文件:
<?php include('smarty/Smarty.class.php'); //程序目录 const DIR_SEP = DIRECTORY_SEPARATOR; define('SITE_ROOT', dirname(__FILE__).DIR_SEP); $smarty = new Smarty(); $smarty->template_dir = SITE_ROOT.'templates'.DIR_SEP; $smarty->complie_dir = SITE_ROOT.'templates_c'.DIR_SEP; $smarty->config_dir = SITE_ROOT.'configs'.DIR_SEP; $smarty->cache_dir = SITE_ROOT.'cache'.DIR_SEP; $smarty->left_delimiter = '{'; //左定界符 $smarty->right_delimiter = '}';//右定界符 $smarty->assign('world','hello world!'); $smarty->display('index.htm'); ?>
在使用php中使用smarty前先要引入smarty文件目录下的Smarty.class.php文件,然后实例化smarty类,实例化之后还要指定模板文件路径,缓存文件存放路径,已经变量解析的左右定界符。相关配置变量设置好后就可以使用smarty了,smarty是通过assign方法把变量注入到模板,然后指定显示模板,这样就可以在相应的模板文件里使用了。比如上面的代码中:
$smarty->assign('world','hello world!');
这句代码的意思是,把'hello world!'赋给'world',在index.htm模板文件中就可以通过{$world},其中‘{}’是定界符,左定界符和有定界符,在模板中使用通过assign注入的变量,定界符一定不能少。
当然:'hello world!'可以是php变量,也可以是数组。
smarty的使用看起来是不是很简单,看十遍不如动手操作一遍,赶紧动手试试吧。