PHP模板引擎smarty详细介绍,本文讲解了什么是smarty、smarty优点、不适合使用smarty的地方、smarty目录结构及版本,需要的朋友可以参考下。

  一、什么是smarty?

  smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,

  目的就是要使用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。在模板文件使用判断语句可以非常方便的对模板进行格式重排。

  三、不适合使用smarty的地方:

  1. 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新,这类型的程序使用smarty会使模板处理速度变慢。

  2. 小项目。小项目因为项目简单而美工与程序员兼于一人的项目,使用smarty会丧失php开发迅速的优点。

  四、smarty目录结构及版本

  打开smarty的官方的网站,www.smarty.net/download.php。下载Smarty 3.1.12。有tar.gz和zip分别适用于linux和windows版本。

  下载好后Smarty-stable-3.1.12解压缩会得到一个 Smarty-3.1.12 文件夹,里面有两个主要文件夹demo和libs

  demo文件夹为示例文件夹,里面包含默认文件夹结构,是我们要进行编写程序代码的主要文件夹。demo里文件夹的名称都是smarty默认的目录结构名称,可以通过改smarty对应属性值,再把文件夹名改成我们想要的名称。

  libs为smarty代码源文件夹,一般不动。

  /libs/Smarty.class.php #主文件

  /libs/sysplugins/ #内部plugin

  /libs /plugins/ #外部plugin,可自由扩充

  /demo/cahce/ #放置缓存文件

  /demo/configs / #放置可以载入的配置文件

  /demo/templates/ #放置模板文件

  /demo/templates_c/ #放置对模板编译后的文件

  可以把解压得到的 Smarty-3.1.12 文件夹名改成我们想要的项目名,demo也可以改成我们想要的具体存放编码的文件夹的名称

  2、调试Smarty-3.1.12

  创建自己的文件,在demo文件夹下创建index.php。

  在templates目录中创建模板index.tpl

  (几乎可以是任何文本文件的扩展名,常用的是tpl,php,html,不建议使用后两者,因为可以从浏览器直接访问而不安全。可以对apache的httpd.conf进行设置,禁止直接访问.tpl文件。或者将templats目录放在网站文档树之外。)

  */

  //index.php代码

  require('../libs/Smarty.class.php');

  $smarty = new Smarty;

  //在调用的模板里可以通过{$name}来输出name的值zhang,{}为这里的smarty分界符

  $smarty->assign('name','zhang');

  //调用模板tpl文件里不能执行PHP语句块

  $smarty->display('templates/index.tpl');

  /*

  index.tpl页面内容

  

  

  你好, {$name}

  

  

  */

  /*

  Smarty编译时的处理过程是源php文件->模板文件(可能调用多个或多次)->源php文件。。。

  也就是说不影响原php文件的其他处理和输出。所以smarty模板文件可以是完整的html,也可以是其中一部分。

  smarty处理过程

  smarty将php源文件,首先编译成中间文件(也是php),如果启用缓存,再根据编译文件生成缓存文件(也是php),需要缓存的部分全部是硬编码。

  之后的每次访问都会访问编译文件(如果编译文件已经存在),一次编译多次调用(可以是单文件的多次,也可以是多文件的多次),如果启用缓存且有缓存文件而且没有过期,则直接访问缓存文件,跳过编译文件。

  编译文件一经生成,就不会被自动更新,除非模板文件或者配置文件更改。源php文件修改是不会引发重新编译的。一旦编译文件重新生成,缓存文件也必然重新生成。

  */

  //Smarty允许有两种特殊的编译设置存在:

  //1、 任何时候都不自动重新编译(上线阶段):只有没有该文件的编译文件时才生成,模板文件或者配置文件的更改,不会引发重新编译。

  $smarty->setCompile_check(false);//默认为true,false表示任何时候都不在文件发生变更的情况下生成编译文件,除了无编译文件。

  $smarty->getCompile_check();//获得当前编译检查的设置

  //2、任何时候都重新编译(调试阶段):任何时候都重新编译。

  $smarty->setForce_compile(true);//默认为false,true表示每次都重新编译(启用缓存的话,每次都重新缓存)

  $smarty->getForce_compile();//获得当前强制编译的设置

  //开启缓存

  $smarty->setCaching(true);

  $smarty->getCaching();//获取当前缓存状态,默认是false关闭的

  $smarty->setcache_lifetime(60);//设置缓存时间单位秒

  //{*模版文件*}

  //{nocache}

  //{$name}

  //{/nocache}

  //{*如果开启缓存的话放在nocache标签内的变量不会缓存,每次读取PHP源文件的值*}

  /*

  smarty分界符

  在模板文件中,区分普通html代码和smarty代码靠的是分界符。默认是 {} ,但可能会与js和css相冲突。可以进行变更。

  在3.0中模板标签将不支持空格,如{ $abc }在Smarty2中可以识别的,但是3.0里头就不行了,必须这样{$abc},这样是为了能够更好的支持javascript和css。

  */

  $smarty->left_delimiter = "{"; //左分界符,2.0属性,3.0沿用

  $smarty->right_delimiter = "}";

  /*

1.《smarty模板 利用PHP模板引擎smarty》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《smarty模板 利用PHP模板引擎smarty》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/97351.html