Heim  >  Artikel  >  Backend-Entwicklung  >  【原创】Smarty 2+ 和 Smarty 3+ 比较(一):smarty执行机制

【原创】Smarty 2+ 和 Smarty 3+ 比较(一):smarty执行机制

WBOY
WBOYOriginal
2016-06-23 13:18:36917Durchsuche

smarty是一种模板引擎——即分离后台逻辑和前端样式,源码为PHP编写。官网地址:http://www.smarty.net/

下载最新的3.1版本后,会有demo文件夹,直接在机器的web目录下执行demo就是一个简单的smarty运用。按照文档或者仿照demo里面的配置,使用smarty起来非常简单。

基本的文件目录和代码如下:

templates和templates_c两个文件夹配置必不可少,templates是html模板的目录,templates_c是把HTML编译成可执行的PHP文件目录。

smarty中两个基本函数assign和display,assign是传参(确切应该是:聚合前台需要的数据,并以k-v形式赋值在唯一的一个数组中),display是找到页面显示(接收assign的数组,输出数组数据显示页面)。归根到底smarty最后执行的是编译后的PHP文件,配合PHP的echo、foreach等原生函数和语法输出内容,在templates_c文件夹下面,存放的都是PHP结尾的文件。

smarty2+和smarty3+执行的基本机制如图:

更简单的过程如下:

编译后的index.tpl.php文件:

<html>  <head></head>  <body>    <?php      foreach($arr as $key=>$val){        echo "<p>".$key."--".$val."</p>";      }    ?>  </body>  </html>

最后index.php可运行文件:

$arr = array("name"=>"abc","tel"=>"2222","age"=>"2111");  //1、把html编译为PHP(省略掉复杂的smarty标签替换为PHP标签)  //2、省略掉中间复杂的编译文件命名、文件引入/写入和cache情况  //3、include 编译后的PHP文件,并执行,注意此时的$arr数组可以在index.tpl.php中使用输出  include "index.tpl.php";

但是smarty3+版本相比2+而言,“100%重写”,无论是在PHP新语法还是编译执行性能上,下面是2+和3+版本分别执行官方demo中的分析图,左为2.6.18版本,右侧为3.1.30版本:

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn