Jul 31

[原]Linux下安装PHP的Smarty模块 晴

linuxing , 18:21 , 编程 » Php , 评论(1) , 引用(0) , 阅读(39174) , Via 本站原创 | |
    模版引擎的目的,就是要达到逻辑分离的功能。它能让程序开发者专注于资料的控制或是功能的达成;而视觉设计师则可专注于网页排版,让网页看起来更具有专业感!Smarty 是PHP的“半官方”的模板化引擎,可能是最流行、功能最强大的PHP模板化引擎,可以自由使用。

一、Smarty 简介
Smarty提供了很多强大的功能:
引用
1、强大的表现逻辑:提供适当的构造,能够有条件地计算和迭代处理数据;
2、模板编译:为了减少开销,Smarty在默认情况下将模板转换为可比较的PHP脚本,使得后续的调用速度更快;
3、缓存:Smarty提供了缓存模板的可选特性,缓存与编译不同的是,支持缓存不只是能生成缓存的内容,还能防止执行个别逻辑;
4、高度可配置和可扩展:Smarty的面向对象体系结构允许修改和扩展其默认行为;
5、安全:Smarty提供了很多安全特性,可以避免服务器和应用程序数据遭到设计人员有意或无意的破坏。

点击在新窗口中浏览此图片
在网上有很多关于Smarty的语法说明和帮助文档,我这里不再一一细说,这也不是我这篇文档的主要目的。
若要学习Smarty,可参考:
官方网站:http://www.smarty.net/
Smarty中文手册
菜鸟学PHP之Smarty入门

二、在Linux下安装Smarty
Windows下的XAMPP已经带有Smarty,但需要配置php.ini文件,可参考下面的步骤进行。
1、获取介质
当然,你可以从官方网站直接下载最新的代码。但我这里提供红旗 Asianux 3可用的rpm包:
安装包:

安装:

# rpm -ivh  php-Smarty-2.6.25-1.noarch.rpm

源码:

2、修改php.ini
因为需要将Smarty类库包含到应用程序中,所以需要确保此位置包含在PHP的include_path配置指令中。
类文件为Smarty.class.php,可通过下面的命令查询其位置:
引用
# rpm -ql php-Smarty|grep Smarty.class.php
/usr/share/php/Smarty/Smarty.class.php

然后修改对应的/etc/php.ini文件,在include_path部分加入:
引用
include_path = ".:/usr/share/php/Smarty/"

保存后,重启httpd服务即可:

# service httpd restart

※ 注意
如果您需要在Windows环境中使用Smarty,以XAMPP为例,可修改安装目录D:\Tools\xampp\php的php.ini为:
引用
include_path = ".;D:\Tools\xampp\php\PEAR\PhpDocumentor\phpDocumentor\Smarty-2.6.0\libs"

Windows平台下,是用分号“;”间隔,Linux平台下,用冒号“:”。

3、创建存储Smarty模板和配置文件的4个目录
如果您的网站需要使用Smarty,必须在网站的根目录下创建4个目录,它们分别是:
引用
templates:放置所有网站模板;
configs:放置在特定网站中使用的所有特殊的Smarty配置文件;
templates_c:放置Smarty编译的所有模板,该目录需要让运行Web服务器的用户拥有修改(写)权限,一般是apache用户;
cache:在启用缓存特性的情况下,放置Smarty缓存的所有模板。

Windows环境下,只要创建好这些目录就可以使用Smarty模块了。而Linux环境中,还需要给予它们适当的权限:

# chown -R apache.apache testphp/

否则不能正常显示(可从Web服务器日志中获取相关报错信息)

※ 安全建议
默认情况下,Smarty认为这些目录与实例化Smarty类的脚本位于相同的目录,也就是虚拟主机的根目录,但建议将这些目录放在Web服务器文档根之外的位置。然后分别使用Smart的$template_dir、$compile_dir、$config_dir和$cache_dir修改默认路径。

三、创建Smarty实例
在PHP脚本中,使用下面的语句即可创建一个Smarty类的实例,smarty_test.php文件内容:

<?php
require ("Smarty.class.php");

$smarty = new Smarty;
$smarty->template_dir="/usr/local/lib/php5/smarty/smarty/template_dir/";
$smarty->compile_dir="/usr/local/lib/php5/smarty/compile_dir/";
$smarty->config_dir="/usr/local/lib/php5/smarty/config_dir";
$smarty->cache_dir="/usr/local/lib/php5/smarty/cache_dir";

$smarty->left_delimiter = '<{'; //重定义模板中变量的分隔符
$smarty->right_delimiter = '}>';  //默认是{}

$smarty->assign("title", "测试用的网页标题");
$smarty->assign("content", "测试用的网页内容");
// 上面两行也可以用这行代替
// $smarty->assign(array("title" => "测试用的网页标题", "content" => "测试用的网页内容"));
$smarty->display('smarty_test.tpl');
?>

其中,smarty_test.tpl就是模板,其在templates目录下,内容如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><{$title}></title>
</head>
<body>
<{$content}>
</body>
</html>

这样,当显示smarty_test.php时,就会显示模板被替换相对应变量后的页面。(注意,访问的是.php,而不是模板本身页面)

四、其他PHP模板引擎
参考:
19个PHP模板引擎
25个顶级PHP模板引擎整理
Tags: ,
博爱老头 Homepage
2009/08/13 18:04
这东东还是日本人用的多。。不过那丫的作者也不更新好久了。
linuxing 回复于 2010/01/08 16:52
是吗?那有什么更好的推荐呢?
最近看了一下,发现已经发布3.0了,官网也改了地址:http://www.smarty.net/
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]