PHP中级(smarty)

<?php
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。在模板文件使用判断语句可以非常方便的对模板进行格式重排。
三、PHP中常用的模板引擎种类:
1:Smarty
2:Smart
3:PHPlib
4:ThinkTemplate

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

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

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

//index.php代码
require(‘../libs/Smarty.class.php‘);
$smarty = new Smarty;
//在调用的模板里可以通过{$name}来输出name的值,{}为这里的smarty分界符
$smarty->assign(‘name‘,‘值‘);
//调用模板tpl文件里不能执行PHP语句块
$smarty->display(‘templates/index.tpl‘);
/*
Smarty编译时的处理过程是源php文件->模板文件(可能调用多个或多次)->源php文件。。。
也就是说不影响原php文件的其他处理和输出。所以smarty模板文件可以是完整的html,也可以是其中一部分。

smarty处理过程
smarty将php源文件,首先编译成中间文件(也是php),如果启用缓存,再根据编译文件生成缓存文件(也是php),需要缓存的部分全部是硬编码。之后的每次访问都会访问编译文件(如果编译文件已经存在),一次编译多次调用(可以是单文件的多次,也可以是多文件的多次),如果启用缓存且有缓存文件而且没有过期,则直接访问缓存文件,跳过编译文件。编译文件一经生成,就不会被自动更新,除非模板文件或者配置文件更改。源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 = "}"; //右分界符
/*
五、Smarty的使用
1:下载smarty类库:www.smarty.net
Smarty2.x:smarty封装内部很多标签和使用都死函数封装的。
Smarty3.x:使用了纯的面向对象编程。
2:将类库引入项目中
3:初始化smarty对象:
Smarty.class.php :核心解析类
SmartyBC.class.php: 2.0到3.0的过渡类
*/
例如:

require_once("./libs/smarty.class.php");
$tpl = new Smarty;
/*
4:smarty配置:
2.0:配置编译和模板目录
3.0:只配置模板目录
$tpl -> template_dir = "./templates/"; 模板目录
$tpl -> compiler_dir = "./compilers"; 编译目录
模板文件后缀可以随意设置: .tpl .dwz .html .htm .ts
5:调用前台模板文件
*/
例如
require_once("./libs/Smarty.class.php");
$tpl = new Smarty;
$tpl -> template_dir = "./templates/";
$tpl -> compile_dir = "./compilers/";

$tpl -> display("index.html");
/*
六、smarty变量
1:php分配给smarty的变量
*/
例如:
index.php文件

require_once("./libs/Smarty.class.php");
$tpl = new Smarty;
$tpl -> template_dir = "./templates/";
$tpl -> compile_dir = "./compilers/";
$tpl -> left_delimiter = "{ts:";
$tpl -> right_delimiter= "}";
$tpl -> assign("title","This is Web Title!");
$tpl -> display("index.html");
/*
index.html文件
<h1>Test Template index!</h1>
{ts:$title}
<hr>
{ts:assign var="username" value="TOM"}
{ts:$username}

七、smarty的分支结构
分支结构形式:

{ts:if 条件}
代码块
{ts:else if 条件}
代码块
{ts:else}
代码块
{ts:/if}
*/
例如:

// if.php页面
require_once("./smarty.inc.php");
$marks = 88;
$tpl -> assign("marks",$marks);
$tpl -> display("if.html");
/*
if.html页面
<h1>if</h1>
{ts:if $marks >=90}
A
{ts:else if $marks>=80}
B
{ts:else if $marks>=70}
C
{ts:else}
D
{ts:/if}
*/
//八、循环结构:
// 1:foreach循环:关联数组最少可以省一次循环
// 格式:
{ts:foreach name=”” item=”” key=”” from=””}
{ts:/foreach}
// 2:Section循环:可以对数据进行二次筛选。
// 格式:
{ts:section name=”” loop=”” start=”” step=”” max=”” show=””}
{ts:/section}
?>

时间: 2024-08-05 13:10:24

PHP中级(smarty)的相关文章

PHP 中级内容

1.面向对象编程(OOP) 2.模板引擎(smarty) 3.MYSQL(中级操作) 数据库抽象层(PDO): 4.Ajax(异步刷新) 5.Js框架(jQuery) Xml+JSON数据 HTTP协议 6.WebService() 7.Socket技术 8.CURL技术 微信接口 9.memcache缓存 10.No-Sql存储 11.MVC开发模式 12.PHP框架(Thinkphp框架,YII,CI等) 13.cms系统(PHPCMS/DeDecms) 14.linux系统(*****)

Git 中级用户的25个小贴士

原文链接:25 Tips for Intermediate Git Users 作者:Andy Jeffries 时间:2009年11月1日 更新:这篇文章最初是在 2009年11月 发布到我的博客,它一直没有更新--不过有许多人发现这篇文章很有用,所以我想保持下去.请不要评论说"这些已经不再是中级小贴士了". 我使用 git 大约 18 个月了,以为自己已经比较了解 git 了.但当我们请 GitHub 的 Scott Chacon 来 LVS 公司(博彩/游戏软件开发商)做一些培训

smarty变量调节器如何使用

smarty变量调节器是用来改变显示的值,不改变变量的值.这里给大家总结了一下,希望对大家的smarty学习有参考意义. 1.capitalize[首字符大写]  调用方法: <?php$smarty->assign('articleTitle', 'next x-men film, x3, delayed.');?> 调用方法: {$articleTitle} {$articleTitle|capitalize} {$articleTitle|capitalize:true} 实现结果

Smarty 函数讲解

这里给大家总结了几种Smarty 函数并分别详细讲解了.如果你正在学习Smarty  ,希望这篇文章对你有用. html_checkboxes 自定义函数 html_checkboxes 根据给定的数据创建复选按钮组. 该函数可以指定哪些元素被选定. 要么必须指定 values 和 ouput 属性,要么指定 options 替代. 所有的输出与 XHTML 兼容 html_checkbox用来用给定的数据创建checkbox.name表示checkbox的名称,values表示checkbox

smarty变量调节器

1.capitalize[首字符大写]  调用方法: <?php$smarty->assign('articleTitle', 'next x-men film, x3, delayed.');?> 调用方法: {$articleTitle} {$articleTitle|capitalize} {$articleTitle|capitalize:true} 实现结果: next x-men film, x3, delayed. Next X-Men Film, x3, Delayed.

HTML+CSS笔记 CSS中级 颜色&长度值

颜色值 在网页中的颜色设置是非常重要,有字体颜色(color).背景颜色(background-color).边框颜色(border)等,设置颜色的方法也有很多种: 1.英文命令颜色 语法: p{color:red;} 2.RGB颜色 这个与 photoshop 中的 RGB 颜色是一致的,由 R(red).G(green).B(blue) 三种颜色的比例来配色 p{color:rgb(133,45,200);} 每一项的值可以是 0~255 之间的整数,也可以是 0%~100% 的百分数. 每

Smarty 模板引擎下缓存设置

缓存:就是将用户重复使用的内容进行缓存生成HTML内容. 缓存类型 全局缓存: 将整个页面内容都生成静态内容. Cache_dir: 缓存目录配置 Cache_lifetime:缓存的有效周期 Cacheing:设置是否开启缓存 局部缓存: 控制整个页面中的某个内容缓存,或者某个内容不缓存. insert函数调用的内容不缓存: 定义insert类型的函数: Smarty 2.x版本: Function insert_插件名(参数列表){ 功能代码 } Smarty 3.x版本: Function

Smarty的应用

smarty模板的核心是一个类,下载好的模板中有这么几个重要的文件夹 (1)libs核心文件夹(2)int.inc.php这是入口文件(3)plugins:自己写的插件文件夹(4)templates_c:存放编译好的文件(5)int.inc.php这是入口文件(6)定义好常量:不能修改 二.怎么用模板? 模板页面1.引入模板的入口文件include("入口文件路径位置"); 2.直接用对象提供一个方法:向模板中注册变量的方法(assign(名字,值)$smarty->assign

前端学PHP之Smarty模板引擎

前面的话 对PHP来说,有很多模板引擎可供选择,但Smarty是一个使用PHP编写出来的,是业界最著名.功能最强大的一种PHP模板引擎.Smarty像PHP一样拥有丰富的函数库,从统计字数到自动缩进.文字环绕以及正则表达式都可以直接使用,如果觉得不够,SMARTY还有很强的扩展能力,可以通过插件的形式进行扩充.另外,Smarty也是一种自由软件,用户可以自由使用.修改,以及重新分发该软件.本文将详细介绍Smarty模板引擎 概述 Smarty是一个php模板引擎.更准确的说,它分离了逻辑程序和外