PHP模板引擎-Smarty学习笔记

Smarty是PHP的一个模板引擎,可以最大限度的分离前台界面与后台数据处理逻辑。同时她的处理方式是“预编译”(类似Java),这样可以保证执行的效率。从前后台分离和效率综合考虑,Smarty无疑是首选的模板引擎。下面是使用Smarty的一些经验总结。

安装下载最新的稳定版(Latest Stable Release):

http://www.smarty.net/download.php

网上好多地方地址都是 smarty.php.net,其实已经搬家了,可能是做大了,想独立吧。

但Smarty的主要研发人员是PHP研发组的主要成员,所以可以保证Smarty紧跟PHP的潮流,算是本家的,这点可以放心。

安装其实就是解压-复制-配置-重启HTTP服务这4步。

1. 解压缩下载下来的文件包

2. 找到里面的libs文件夹,把它拷贝到服务器的某个文件夹下,如:/var/www/smarty/libs

3. 找到php配置文件,Linux下可能是 /etc/php.ini,Windows下可能是:\windows\php.ini

修改其中的include_path一节,把前面的“;”去掉,再去掉没用(根本不存在)的路径,加上第二步拷贝到的那个文件夹。注意:Windows下用分号(;)分割多个路径,Linux下用冒号(:)。

4. 重启HTTP服务,Linux下 执行 service httpd stop和service httpd start即可,Windows里自己重启一下IIS即可。

说明:以上步骤做完之后所有网站中使用Smarty就很简单,只需要一句话:

include_once(“Smarty.class.php”);

另外的一种安装方法主要用于使用虚拟主机的网站,人家没用配置Smarty支持,有没用办法随便操作人家的服务器,就只能把上述libs文件夹上传到自己的网站目录下,然后用网站的绝对路径或者相对路径来引用Smarty,如:

include_once(“./libs/Smarty.class.php”);

两种方法的区别就是:第一种使用PHP的配置,让PHP自己找具体的路径,第二种要自己给出具体的Smarty库的路径。

牛刀小试 — 第一个例子

first.php 的内容 

<?php

include_once("Smarty.class.php"); //包含smarty类文件
$smarty = new Smarty(); //建立smarty实例对象$smarty
$smarty->template_dir = "./templates/";//设置模板目录
$smarty->compile_dir = "./templates_c/"; //设置编译目录
$smarty->left_delimiter = "{";
$smarty->right_delimiter = "}";
$smarty->assign("name", "王老五"); //进行模板变量赋值

//编译并显示位于./templates下的index.tpl模板
$smarty->display("first.tpl");

?>

./templates/first.tpl 的内容:

大家好,我叫{$name},这是我的第一个Smarty页面。

访问一下 first.php,应该显示:

大家好,我叫王老五,这是我的第一个Smarty页面。

这么简单就搞定了Smarty,爽吧。那样就错了,这只是个原理,真正的使用可没那么简单。

使用Smarty

Smarty的使用说简单也简单,说复杂也复杂。说她简单是因为做个Demo很容易,说她复杂是因为她也是一种脚本语言,也要经过认真的学习和应用才能真正发挥她的神奇作用。我这样的菜鸟目前只能望之兴叹了,好在还年轻,才三四十岁(呜呜呜),慢慢来吧。

常见问题

1. 没有把模板文件放到指定的模板文件夹中

$smarty->display(“temp.tpl”);

Smarty只能去你给定的模板文件夹中去找模板文件,不会在你的当前文件夹下找。

2. 没有给模板编译文件夹指定创建文件和写入权限

Smarty会先编译模板文件,并存放到你指定的模板编译文件夹下,如果这个文件夹不存在,或者没有创建文件和写入权限,当然就执行不动了。

3. 待补充