Smarty模版引擎的原理

Posted 不见晨曦的占星师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Smarty模版引擎的原理相关的知识,希望对你有一定的参考价值。

  Smarty是一个使用php写出来的模版引擎,用来将原本与html代码混杂在一起PHP代码逻辑分离,实现前后端分离。

Smarty模板优点:

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。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
(下面的部分转载自他人博客...)

分析模板技术:是利用php语言读取模板文件完成字符串替换掉的过程

详解代码如下:

复制代码
html页面:
<body>
<font color = \'red\'>{id}</font><br>
<font color = \'green\'>{name}</font><br>
<font color = \'bule\'>{age}</font><br>
</body>


后台逻辑部分
//
$id=8;
$name=\'zhangsan\';
$age = 12;

$str = file_get_contents(\'demo1.html\');//模板文件的所有内容
$str = str_replace(\'{id}\', $id, $str);//替换id
$str  = str_replace(\'{name}\', $name, $str);
$str = str_replace(\'{age}\', $age, $str);
echo $str;
?>
复制代码

 

 面向对象技术实现模板功能的封装

复制代码
 1 <?php
 2 class Template
 3 {
 4     //属性
 5     public $vars;                        //保存要替换的标记和数据的内容
 6     public $left_delimiter = \'{*\';        //左分隔符
 7     public $right_delimiter = \'*}\';        //右分隔符
 8     //方法
 9     public function assign($key,$value)
10     {
11         
12         $this->vars[$key] = $value;
13     }
14     public function display($file)     //file表示模板名
15     {
16         $str = file_get_contents($file);    //从模板中读取多有内容,并将内容放入$str中
17         foreach ($this->vars as $key => $value) //$key 键名(模板标记) $value 值
18         {
19             $str = str_replace($this->left_delimiter.$key.$this->right_delimiter, $value, $str);
20         }
21         echo $str;
22         //file_put_contents(\'bak.html\', $str);
23     }
24 }
25 ?>
复制代码

注意:assign(‘name’,’zhangsan’);这句的时候其实还没有进行数据替换,而是把传入的数据保存在vars[]中,当display的时候才进行数据替换

以上是关于Smarty模版引擎的原理的主要内容,如果未能解决你的问题,请参考以下文章

PHP smarty模版引擎基本安装

12月13日上午Smarty模版原理

smarty模板引擎入门教程

PHP模版引擎 – Twig

前端数据模版引擎的总结

php模板原理PHP模板引擎smarty模板原理浅谈