模版引擎的目的,就是要达到逻辑分离的功能。它能让程序开发者专注于资料的控制或是功能的达成;而视觉设计师则可专注于网页排版,让网页看起来更具有专业感!Smarty 是PHP的“半官方”的模板化引擎,可能是最流行、功能最强大的PHP模板化引擎,可以自由使用。
一、Smarty 简介
Smarty提供了很多强大的功能:
2、模板编译:为了减少开销,Smarty在默认情况下将模板转换为可比较的PHP脚本,使得后续的调用速度更快;
3、缓存:Smarty提供了缓存模板的可选特性,缓存与编译不同的是,支持缓存不只是能生成缓存的内容,还能防止执行个别逻辑;
4、高度可配置和可扩展:Smarty的面向对象体系结构允许修改和扩展其默认行为;
5、安全:Smarty提供了很多安全特性,可以避免服务器和应用程序数据遭到设计人员有意或无意的破坏。
二、在Linux下安装Smarty
Windows下的XAMPP已经带有Smarty,但需要配置php.ini文件,可参考下面的步骤进行。
1、获取介质
当然,你可以从官方网站直接下载最新的代码。但我这里提供红旗 Asianux 3可用的rpm包:
安装包:
安装:
源码:
2、修改php.ini
因为需要将Smarty类库包含到应用程序中,所以需要确保此位置包含在PHP的include_path配置指令中。
类文件为Smarty.class.php,可通过下面的命令查询其位置:
/usr/share/php/Smarty/Smarty.class.php
然后修改对应的/etc/php.ini文件,在include_path部分加入:
保存后,重启httpd服务即可:
※ 注意
如果您需要在Windows环境中使用Smarty,以XAMPP为例,可修改安装目录D:\Tools\xampp\php的php.ini为:
Windows平台下,是用分号“;”间隔,Linux平台下,用冒号“:”。
3、创建存储Smarty模板和配置文件的4个目录
如果您的网站需要使用Smarty,必须在网站的根目录下创建4个目录,它们分别是:
configs:放置在特定网站中使用的所有特殊的Smarty配置文件;
templates_c:放置Smarty编译的所有模板,该目录需要让运行Web服务器的用户拥有修改(写)权限,一般是apache用户;
cache:在启用缓存特性的情况下,放置Smarty缓存的所有模板。
Windows环境下,只要创建好这些目录就可以使用Smarty模块了。而Linux环境中,还需要给予它们适当的权限:
否则不能正常显示(可从Web服务器日志中获取相关报错信息)
※ 安全建议
默认情况下,Smarty认为这些目录与实例化Smarty类的脚本位于相同的目录,也就是虚拟主机的根目录,但建议将这些目录放在Web服务器文档根之外的位置。然后分别使用Smart的$template_dir、$compile_dir、$config_dir和$cache_dir修改默认路径。
三、创建Smarty实例
在PHP脚本中,使用下面的语句即可创建一个Smarty类的实例,smarty_test.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目录下,内容如下:
<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模板引擎整理
PHP设计模式——策略模式
PHP设计模式——命令模式
PHP设计模式——观察者模式
PHP设计模式——单元素模式
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/104739.html