封装一个自定义Smarty引擎

Smart模板注释  基本语法:{* 注释内容 *}

Smarty模板中的变量

简单变量

四种标量类型:整型、浮点型、布尔型和字符串型!

数组变量

可以给模板分配一个数组变量使用(一维和多维都可以)

对象变量

我们同样的可以将一个对象变量分配给模板文件,然后通过{$对象名->属性名}来访问这个对象的属性值!

变量调节器

基本语法

不同的调节器有不同的名字,可以完成不同的功能,并且不同的调节器都有自己不同的参数!

{$变量名|调节器名:参数1:参数2:参数3……}

cat

作用:主要是对两个字符串进行连接操作!

{$变量名1|cat:$变量名2|cat:$变量名3}

date_format

作用:对时间戳进行格式化!参数有很多,但是主要的参数还是代表年月日时分秒的参数!

{$变量名(时间戳)|date_format:‘%Y-%m-%d %H:%M:%S’}

default

作用:当一个变量为空或者没有定义的时候,默认的就以default后面的值进行填充!

{$变量名|default:值}

lower 和 upper

作用:将字符串里面的英文字母全部转换成小写或大写!

{$变量名|lower}

{$变量名|upper}

escape

作用:加上这个调节器后,浏览器就不会解析相关的html等标签!

 {$变量名|escape}

strip_tags

作用:去掉js和html等相关的标签!

{$变量名|strip_tags}

nl2br

作用:将字符串中的\n转换为<br />标签,从而在显示的时候真正的实现换行的效果

{$变量名| nl2br}

replace

作用:将变量中的字符串1全部替换成字符串2

{$变量名| replace:字符串1:字符串2}

tring_format

作用:讲字符串进行格式化!比如:%d代表整型,%s代表字符串!

{$变量名| string_format:%d}

truncate

作用:只截取前多少多少的字符,后面用…代替!

{$变量名|truncate:字符串长度:’…’}

注意:

1, 这的…是默认结束符,可以省略!

2, 这里的…占用字符串指定的长度!

3, 这里的结束符也可以使用用户指定的字符串

4, 如果实在不想显示任何的结束符,可以使用null代替

5, 也可以省略字符长度,默认为80个!

6, 截取中文的时候容易出现乱码:

Smarty系统变量

也叫作Smarty保留变量,就是Smarty系统自己已经定义好了,不需要用户手动分配给模板,可以直接在模板文件中使用的变量!

常用的有以下的几个:

{$smarty.get.变量名称}      相当于PHP中的$_GET

{$smarty.post.变量名称}    相当于PHP中的$_POST

{$smarty.cookies.变量名称}   相当于php中的$_COOKIE

{$smarty.session.变量名称}   相当于php中的$_SESSION

{$smarty.now}        相当于php中的time函数,返回一个当前时间的时间戳!

Smarty的内置语句

foreach

基本语法

{foreach from=数组名 item=元素的值的名 key=元素的键名 name=名称}

  {foreachelse}

{/foreach}

主要功能:用于数组元素的遍历!

from:要遍历哪个数组元素(必选项)

item:系统每次将遍历的结果放入到变量item中(必选项)

key:键名

name:给本次foreach遍历起一个名字

foreach中的内置变量

$smarty.foreach.name.index:  代表循环的索引值,默认是从0开始,其中的name就是在foreach选项中给foreach循环起的一个名字!也就是说,如果想使用foreach内置变量,就必须先给foreach循环起一个名字!

$smarty.foreach.name.iteration:循环迭代,代表当前是第几次循环,默认从1开始!

$smarty.foreach.name.total:  代表本次一共循环了多少次!

include

基本语法:  {include file=文件名 变量名=变量值}

主要功能:实现文件加载,常用于网页布局

if…elseif…else 

literal标签

基本语法

{literal}

……

{/literal}

主要的功能就是把被包裹的标记当做普通文件直接输出,也就是不会被smarty解析,主要用于包裹js和css标签!

Smarty模本引擎的更多相关文章

  1. smarty模板引擎

    1.    使用smarty 1.1 项目引入 // 3, 连接数据库,提取相关数据 $title = "Smarty模板引擎"; $content = "Smarty模 ...

  2. 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)

    前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...

  3. 深入浅出之Smarty模板引擎工作机制(二)

    源代码下载地址:深入浅出之Smarty模板引擎工作机制 接下来根据以下的Smarty模板引擎原理流程图开发一个自己的模板引擎用于学习,以便加深理解. Smarty模板引擎的原理,其实是这么一个过程: ...

  4. 深入浅出之Smarty模板引擎工作机制(一)

    深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解. ...

  5. Smarty模板引擎技术二

    Smarty模板引擎技术 内建函数 include_php内建函数 作用:载入一个php文件,将载入的文件的内容赋值给一个变量   注意:该内建函数只能在2.0中使用,如果使用的话,必须得实例化Sma ...

  6. Smarty模板引擎技术

    Smarty模板引擎技术 什么是模板引擎? 什么是Smarty模板引擎? 为何选择Smarty模板引擎? 如何使用Smarty模板引擎? 一.历史背景 场景一:回顾之前编写PHP项目的方式 //链接数 ...

  7. Ci框架整合smarty模板引擎

    Ci框架整合smarty模板引擎 备注:下载smarty时,最好选择2.6版本,其他测试有坑,ci可以是2.2或其他 大体思路:将smarty封装成ci框架的一个类,然后重新配置一下smarty,这样 ...

  8. 迷你版 smarty --模板引擎和解析

    http://blog.ipodmp.com/archives/php-write-a-mini-smarty-template-engine/ 迷你版Smarty模板引擎目录结构如下: ① 要开发一 ...

  9. smarty模板引擎原理解析

    //php 控制器文件 <?php//引入模板引擎文件include("20130304.php");$smarty =newTinySmarty();$qq_numbers ...

随机推荐

  1. CE驱动动态加载卸载

    加载: #define DEV_KEY TEXT("Drivers\\Builtin\\WCDMA") BOOL CGPRSCTRLDlg::Load() { //DWORD dw ...

  2. circular_buffer

    编程有时需要使用定长的容器(fixed size container).实现旋转容器可以像下面这样: std::vector<T> vec(size); vec[i % size] = n ...

  3. memcache/memcached安装教程并应用Tinkphp3.2

    在自己的新程序中打算全面应用memcached技术,这个很容易理解这是memcached是内存缓存,但是怎么还有memcache呢?其实很简单,memcache是php的一个扩展,用于php管理mem ...

  4. C#连接操作mysql实例

    第三方组件:Mysql.Data.dll说明:去官方网站下载Mysql.Data.dll,然后在项目中添加该组件的引用,在代码页里输入using Mysql.Data.MysqlClient,我们就可 ...

  5. [原]php远程odbc连接sqlsvr数据库,自定义端口,命名实例的连接方式

    远程odbc连接sqlsvr数据库,自定义端口,命名实例的连接方式,默认如果不修改的话sqlsvr的端口号是1433,默认实例名就是机器名,,如果既用了命名实例,又改了默认端口,改怎么连接数据库呢? ...

  6. javascript 利用匿名函数对象给你异步回调方法传参数

    先来创建一个匿名函数对象: /*** * 匿名函数 */ var callChangeBtn=new function(bugBtn){ this.chage=function(json){ bugB ...

  7. Does Lamda expression return value?

    Basically, the compiler does this for you. If you write a lambda as a single statement (and don't in ...

  8. javascript标识符

    标识符,就是指变量.函数.属性的名字,或者函数的参数. 规则 1.第一个字符必须是一个字母.下划线或是美元符号($) 2.其他字符可以是字母.下划线.美元符号或数字 3.不能是关键字和保留字 4.区分 ...

  9. [Linux] - Docker制作nginx+php

    使用Docker制作nginx+php的镜像,这里的镜像是centos + nginx 1.9.7 + php 5.6.14 首先下载到nginx和php: nginx-1.9.5.tar.gz 下载 ...

  10. 使用Navicat连接数据库,不能创建外键

    最近在学习python中遇到这样的情况,使用Navicat连接MySQL,为表结构创建外键时,出现了创建外键就消失,而且外键也没有创建成功的情况. 在网上找了些资料,最后发现是MySQL引擎的问题.由 ...