HTML HTML5 PHP Mysql Linux 缓存技术 工具 资讯 读书 其他
当前位置: 资讯首页 » 全文内容

PHP的模版引擎 - Smarty

发布于: 2017-03-21 14:54:37 )
虽然PHP被标榜为“HTML嵌入式语言”,在写过许多PHP和HTML混合式的项目之后,一个分离表单和内容的想法产生了。而且,在许多公司里规划设计者的角色和程序设计者是分开的。于是,这样的一个模板解决方案产生了。

Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

优点:
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安装配置方法
下载地址:http://smarty.php.net

将libs目录重命名为smarty,复制到你的网站目录,同时在网站根目录下建立templates和templates_c两个目录,我们写个例子:

① 新建:test.php

/**
 * Smarty
 *
 * @date   2017-03-21
 * @author hedong
 */
require __DIR__ . '/Smarty/Smarty.class.php';

$smarty = new Smarty;

$smarty->template_dir    = "./templates"; //模板存放目录
$smarty->compile_dir     = "./templates_c"; //编译目录
$smarty->cache_dir       = "cache";//指定缓存文件路径
$smarty->left_delimiter  = "{"; //左定界符
$smarty->right_delimiter = "}"; //右定界符
$smarty->caching         = true; // 开启缓存
$smarty->cache_lifetime  = 120; // 缓存时间120秒

$smarty->assign('name', 'hedong'); // 设置模版变量

$smarty->display('test.html'); //调用的模版文件名


// 新版本添加扩展目录需要使用addPluginsDir添加

//$smarty-->addPluginsDir('/Smarty_plugins');

?>



② 新建模版test.html ,在模版中可使用模版变量 {$name}



    Smarty Test



    {$name}




③ 执行后会生成两个缓存文件


我们看到,生成的文件内容是PHP和Html混合的形式,如下:

/* Smarty version 3.1.30, created on 2017-03-21 22:41:44
  from "/phpTest/smarty_test/test.html" */

/* @var Smarty_Internal_Template $_smarty_tpl */
if ($_smarty_tpl->_decodeProperties($_smarty_tpl, array (
  'version' => '3.1.30',
  'unifunc' => 'content_58d13ba849b361_69744836',
  'has_nocache_code' => false,
  'file_dependency' =>
  array (
    'd173d8b61280f72ba9e673952ce300a43f94f2f5' =>
    array (
      0 => '/Users/jackwoo/wwwroot/jack_meal/phpTest/smarty_test/test.html',
      1 => 1490106938,
      2 => 'file',
    ),
  ),
  'cache_lifetime' => 120,
),true)) {
function content_58d13ba849b361_69744836 (Smarty_Internal_Template $_smarty_tpl) {
?>


    Smarty Test



    hedong


}


以上只是smarty模板教程部分的冰山一角,想要了解到更深层的smarty模板使用教程,就必须不断地积累,以便在项目中熟练运用,根据项目需求实现所需的功能!

To Top