php基础复习(一)smarty模板

一。基本配置
第一步:下载smarty:官网www.smarty.net
第二步:加载类文件和更改配置

1. //加载类文件

require_once ‘../libs/Smarty.class.php‘;
//实例化对象
$smarty=new Smarty();
//更改配置 如果不更改就不用写
$smarty->setTemplateDir(‘./templates‘);//设置模版目录
$smarty->setCompileDir(‘./templates_c‘);//设置编译目录
$smarty->setCacheDir(‘./cache‘);//设置缓存目录
$smarty->setConfigDir(‘./configs‘);//设置配置文件所在目录
$smarty->addPluginsDir(‘./plugins‘);//添加插件目录
$smarty->left_delimiter=‘{‘;
$smarty->right_delimiter=‘}‘;
//设置缓存
$smarty->debugging = true; //开启的调试窗口
$smarty->caching = true;
$smarty->cache_lifetime = 120;
第三步:许可变量与显示
$smarty->assign(‘chen‘,‘123‘);
//显示模版
$smarty->display(‘1.html‘);

二。常见类型的输出
$smarty->assign(‘int‘,PHP_INT_MAX);
$smarty->assign(‘float‘,12.3);
$smarty->assign(‘bool‘,true);
$smarty->assign(‘string‘,‘this is a test‘);
$smarty->assign(‘arr‘,array(‘a‘,‘b‘,‘c‘,‘username‘=>‘king‘,‘age‘=>12));
$smarty->assign(‘arr1‘,array(‘a‘=>array(1,2,3),‘b‘=>array(11,22,33)));
$smarty->assign(‘obj‘,new Test());
$smarty->assign(‘resource‘,fopen(‘index.php‘,‘r‘));
$smarty->assign(‘null‘,NULL);
class Test{
public $username;
public $email;
public $sex;
public function __construct(){
$this->username=‘king‘;
$this->email=‘[email protected]‘;
$this->sex=‘男‘;
}
public function sayHi(){
echo ‘Say Hi To Everybody<br/>‘;
}
public function test(){
return ‘this is a test‘;
}
}
三、模板注释
{*模版注释,注释不会在模版文件的最后输出中出现*}
{*这是HTML注释不一样*}
四、在模板中定义变量
通过assign在模板中声明变量
{ assign var=num1 value=1 }
num1:{$num1} <br />
声明变量
{$test="hello"}
{$test} <br />
标签嵌套
{$test1="{$test} chen"}
{$test1} <br />
声明数组
{assign var=arr3 value=[1,2,3]}
{$arr3.0} <br />
{$arr3[1]} <br />
{assign var=arr4 value=[‘username‘=>‘queen‘,‘age‘=>12]}
{$arr4.username} <br />
{$arr4[‘age‘]} <br />
{$arr5=[‘a‘,‘b‘,‘c‘,[‘test‘=>‘test‘,‘test1‘=>‘test1‘,‘eee‘]]}
{$arr5.0} <br />
{$arr5[3][‘test‘]} <br />
{$arr5[3][0]} <br />
可变变量
{$world=‘world‘}
{$hello_world="this is hello world"}
{$hello_{$world} <br />
四、预保留变量

session_start();
$_SESSION[‘username‘]=‘admin‘;
$_SESSION[‘id‘]=1;
define(‘TEST‘,‘This is a test‘);

在模板中
{$smarty.session.username}
{$smarty.session.id}
可以使用的预保留变量
1>页面请求变量
$smarty.get.page 相当于PHP中的$_GET[‘page‘]
$smarty.post.page 相当于PHP中的$_POST[‘page‘]
$smarty.cookies.username 相当于PHP中的$_COOKIE[‘username‘]
$smarty.session.username 相当于PHP中的$_SESSION[‘username‘]
$smarty.server.SERVER_NAME 相当与PHP中的$_SERVER[‘SERVER_NAME‘]
$smarty.env.PATH 相当于PHP中的$_ENV[‘PATH‘]
$smarty.request.username 相当于PHP中的$_REQUEST[‘username‘]
得到当前的时间戳
{$smarty.now}
{$smarty.now|date_format:‘%Y-%m-%d %H:%M:%S‘}
{time()}
{date("Y-m-d H:i:s",time())}
得到PHP脚本中的常量的值
PHP版本:{$smarty.const.PHP_VERSION} <br />
PHP_OS: {$smarty.const.PHP_OS} <br />
{$smarty.const.TEST}
得到配置文件中的值
{config_load "reset.conf"}
title:{$smarty.config.title} <br />
title:{#title#} <br />
返回经过处理的当前模版名(不包含目录)
当前模版名称:{$smarty.template} <br />
返回当前的模版目录名
当前模版目录名称:{$smarty.current_dir} <br />
返回Smarty的版本号
Smarty Version:{$smarty.version} <br />
返回当前的左右定界符
左定界符:{$smarty.ldelim} <br />
右定界符:{$smarty.rdelim} <br />
其它常用:
{$smarty.capture}:捕获内置的capture模版输出
{$smarty.section}:用来指向section循环的属性
{$smarty.block.child}:返回子模版文本块
{$smarty.block.parent}:返回父模版文本块

五、变量调节器
capitalize:将变量里的单词的首字母大写,ucwords*
单词首字母大写:{$test|capitalize}
{$test|ucwords}
{*count_characters:计算变量值里的字符个数,
参数值boolean型决定是否计算空格数,默认不计算*}
字符个数:{$test|count_characters}
字符个数带空格:{$test|count_characters:true}
cat:将cat里的参数值连接到给定的变量后面,默认为空
连接字符:{$test|cat:‘!‘:‘<br/>‘:‘hello world!‘:"maizixueyuan"}
count_paragraphs:计算变量里的段落数量
段落数量:{$content|count_paragraphs}
count_sentences:计算变量里的句子,句子由点号、问号或感叹号分隔(.?!)。
段落中的句子: {$content|count_sentences}
count_words:计算变量的单词数
单词数:{$content|count_words}
date_format:日期格式化
{$smarty.now|date_format:"%Y-%m-%d"} <br />
赋初始值
为变量赋初始值:{$kickName|default:‘king‘} <br />
{*escape HTML转码,URL转码等,默认是HTML转码*}
默认没有转码
{$string} <br />
转换HTML实体或者写escape:‘html‘
{$string|escape} <br />
{$string|escape:‘html‘} <br />
lower|upper转换成小写或者大写
{$string1|lower} <br />
{$string1|upper} <br />
indent产生缩进,第一个参数指定缩进多少个字符,默认是四个字符;
第二个参数,指定缩进用什么字符代替
{$string1|indent:4} <br />
{$string1|indent:4:‘*‘} <br />
nl2br 将字符串中的换行符转换成<br/>像PHP中的nl2br()
{$string2|nl2br} <br />
replace:字符串替换,第一个参数是搜索的内容;
第二个参数是搜索到之后替换的内容;
相当于PHP中的str_replace()函数*}
{$string2|replace:‘maizi‘:‘麦子‘} <br />
spacify:在字符串的每个字符之间插入空格或者其它字符,默认是空格
{$string2|spacify} <br />
{$string2|spacify:‘*‘} <br />
strip:替换所有重复的空格,换行和tab为单个或者指定的字符串;
可以指定要替换的字符串
*}
{$string2|strip} <br />
{$string2|strip:‘?‘} <br />
{*strip_tags:去除所有的HTML标记*}
{$string3} <br />
{$string3|strip_tags} <br />
{*string_format:格式化字符串*}
{$number=3.1415926}
{$number} <br />
{$number|string_format:"%.2f"} <br />
{$number|string_format:"%d"} <br />
对于同一个变量,你可以使用多个修改器。它们将从左到右按照设定好的顺序被依次组合使用。 使用时必须要用"|"字符作为它们之间的分隔符。
转换成实体|小写|用*进行缩进
{$string|escape|lower|indent:‘4‘:‘*‘} <br />
也可以使用PHP的系统函数
{$string4=‘maiziedu‘}
{$string4|substr:2:2} <br />
{$string4|strtoupper} <br />
系统中默认的变量调节器函数都是Smarty自带的插件
都在plugins目录下
{$filename=‘1.txt.jpeg‘}
{$filename|ext} <br />
<hr />
{$string4|font:‘20px‘:‘green‘:‘Microsoft Yahei‘:‘normal‘}
<hr />
{$string4|font:‘30px‘:‘purple‘:‘华文彩云‘:‘bold‘} <br />
{$string4|strShuffle} <br />

六、Smarty模版中的内置函数
assign 声明变量
{assign var=‘username‘ value=‘king‘}
用户名:{$username} <br />
相当于assign函数属性的简写
{assign username test}
用户名:{$username} <br />
相当于assign的缩写,直接写变量名称=值
{$username=‘queen‘}
用户名:{$username} <br />
{$array=[‘a‘,‘b‘,‘c‘,1,2]}
{$array.0} <br />
通过append动态追加元素
{append var=‘array‘ value=‘d‘}
{append var=‘array‘ value=‘king‘ index=‘username‘}
{print_r($array)}
<hr />
<h3>流程控制相关</h3>
{$username=‘maizi‘}
1、 if
{if $username==‘maizi‘}
欢迎 <br />
{/if}
3、if...else
{if $username eq ‘maizi1‘}
Hello Maizi1 <br />
{else}
Hello Everybody <br />
{/if}
3、if ... elseif...
{$day=3}
{if $day==1}
星期一 <br />
{elseif $day==2}
星期二 <br />
{else}
非法日期
{/if}
4、is [not] div by是否能整除
{$num1=8}
{if $num1 is div by 4}
整除 <br />
{else}
不能整除 <br />
{/if}

5、is[not] even是否为偶数
{$num1=3}
{if $num1 is not even}
不是偶数 <br />
{else}
是偶数 <br />
{/if}

6、for循环
步长为1的简单循环
{for $var=1 to 10}
{$var} <br />
{/for}

设置步长
{for $var=1 to 10 step 2}
{$var} <br />
{/for}

通过max设置最大循环次数
{for $var=1 to 100 step 2 max=10}
{$var} <br />
{/for}

当循环条件不成立的时候可以使用forelse
{for $var=5 to 1}
{$var} <br />
{forelse}
循环条件不成立时执行的代码 <br />
{/for}

使用while循环
{$var=10}
{while $var>=0}
{$var--} <br />
{/while}

遍历数组可以通过foreach 和 section进行遍历
通过foreach进行遍历*
{$arr=[‘a‘,‘b‘,‘c‘,‘d‘]}
{if is_array($arr)}
{foreach $arr as $k=>$v}
键名={$k}---键值={$v}
<hr />
{/foreach}
<hr />
{foreach $arr as $v}
键值={$v} <br />
{/foreach}
<hr />
{*如果没有指定数组下标 可以通过@key得到*}
{foreach $arr as $v}
键名={[email protected]}--键值={$v} <br />
{/foreach}
{/if}

当数组没有值时可以使用foreachelse
{foreach $arr1 as $val}
{$val}
{foreachelse}
没有结果
{/foreach}

foreach支持嵌套
{foreach $users as $user}
{foreach $user as $val}
{$val} <br />
{/foreach}
<hr />
{/foreach}
<hr color=‘red‘/>
<h2>用户列表</h2>
<table border=‘1‘ width=‘80%‘ cellpadding=‘0‘ cellspacing=‘0‘>
<tr>
<td>编号</td>
<td>用户名</td>
<td>邮箱</td>
<td>地址</td>
</tr>
{foreach $users as $user}
<tr>
<td>{$user.id}</td>
<td>{$user.username}</td>
<td>{$user.email}</td>
<td>{$user.addr}</td>
</tr>
{foreachelse}
<tr>
<td colspan=‘4‘>没有用户</td>
</tr>
{/foreach}
</table>

foreach中有一些常用属性
<hr color=‘blue‘/>
<h2>用户列表</h2>
<table border=‘1‘ width=‘80%‘ cellpadding=‘0‘ cellspacing=‘0‘>
<tr>
<td>编号</td>
<td>用户名</td>
<td>邮箱</td>
<td>地址</td>
</tr>
{foreach $users as $user}
{if [email protected]}
<tr bgcolor=‘red‘>
{elseif [email protected]}
<tr bgcolor=‘green‘>
{elseif [email protected] is even}
<tr bgcolor=‘blue‘>
{else}
<tr>
{/if}
<td>id={$user.id}--index={[email protected]}--iteration={[email protected]}</td>
<td>{$user.username}</td>
<td>{$user.email}</td>
<td>{$user.addr}</td>
</tr>
{/foreach}
{if [email protected]}
<tr><td colspan=‘4‘>一共{[email protected]}个用户</td></tr>
{else}
<tr><td colspan=‘4‘>没有用户,请添加</td></tr>
{/if}
</table>
<hr color=‘red‘/>
通过break终止循环
{$arr=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘]}
{foreach $arr as $val}
{if $val==‘c‘}
{break}
{/if}
{$val}
{/foreach}

通过continue跳过当次循环,进入下次循环
{$arr=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘]}
{foreach $arr as $val}
{if $val==‘c‘}
{continue}
{/if}
{$val}
{/foreach}

七:继承
$smarty->display(‘extends:parent.html|child.html‘);

时间: 2024-08-24 06:57:10

php基础复习(一)smarty模板的相关文章

smarty模板基础2

Smarty自带了一些内置函数,这些内置函数是Smarty模板引擎的组成部分.他们被编译成相应的内嵌PHP代码,以获得最大性能. 您创建的自定义函数不能与内置函数同名,也不必修改这些内置函数. 其中一些具有assign属性,用来收集函数结果,并将结果分配给一个命名的模板变量,而不是将内容输出,类似于{assign}函数. 一.{if}{elseif}{else} 条件 随着一些特性加入到模版引擎,Smarty的{if}语句与php的if语句一样富有弹性.每一个{if}必须与一个{/if}成对出现

smarty模板引擎基础(二)

smarty模板引擎所需文件夹共可分为存放页面缓存的(cache).存放配置文件的(configs).存放模板扩充插件的(plugins).存放模板文件的(templates).存放编译后的模板文件的(templates_c).存放后端程序代码的(main); 一.configs文件夹:即保存一些与页面配置有关的相关代码,可以用[]来进行模块分类 ,以conf格式保存,可用记事本打开查询,在页面中的调用指令为 <{config_load file='文件名' section="模块名&qu

smarty模板基础1

smarty模板的作用可以让前端和后端分离(也就是前端的显示页面和后端的php代码). smarty模板的核心是一个类,下载好的模板中有这么几个重要的文件夹 (1)libs核心文件夹(2)int.inc.php这是入口文件(3)plugins:自己写的插件文件夹(4)templates_c:存放编译好的文件(5)int.inc.php这是入口文件(6)定义好常量:不能修改 一.如何实现前后分离的原理:核心是一个类1.左分隔符{2.右分隔符}3.数组(默认空数组):存储变量 4.提供一个方法:向模

smarty模板基础3 *缓存数据*

缓存数据,这个并不是暂存的缓存,而是写入了内存的缓存 通过一个例子来书写:缓存数据 一.书写php和html页面的基本功能 既然是用smarty模板,那么前端和后端要分开写了 (1)php页面 <?php $filename = "../cache/huancun.html"; //这个是放缓存的页面(缓存的不是代码,而是页面的源信息) include("../init.inc.php"); //引入入口文件 include("../DBDA.php

smarty模板基础

smarty模板的作用可以让前端和后端分离(也就是前端的显示页面和后端的php代码). smarty模板的核心是一个类,下载好的模板中有这么几个重要的文件夹 (1)libs核心文件夹(2)int.inc.php这是入口文件(3)plugins:自己写的插件文件夹(4)templates_c:存放编译好的文件(5)int.inc.php这是入口文件(6)定义好常量:不能修改 一.如何实现前后分离的原理:核心是一个类1.左分隔符{2.右分隔符}3.数组(默认空数组):存储变量 4.提供一个方法:向模

smarty模板引擎(一)基础知识

一.基本概念 1.什么是mvc? mvc是一种开发模式,核心思想是:数据的输入.数据的处理.数据显示的强制分离. 2.什么是smarty? smarty是一个php的模板引擎.更明确的来说,它可以帮助开发者更好的分离程序逻辑和页面显示. 3.smarty运行原理 模板文件,就是一个显示数据的模板,其中需要显示的数据用占位符代替. smarty运行时,会读取模板文件,将模板文件中的占位符替换成真正的数据,并输出一个处理后的php文件,交由服务器运行. 二.自己写一个smarty模板 为了更好的理解

C++基础复习

一. C++与C的比较: C语言是一个结构化语言,它的重点在于算法和数据结构,C语言的设计首先要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到的输出(或实现过程(事物)控制). C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制. 所以C语言和C++的最大区别在于它们解决问题的思想不同,一个面向过程一个面向对象. C++对C的"增强",表现在六个方面: 1.类型检测更为严格. 2.

编写一个非常简单而且山寨的smarty模板引擎

PHP的正则表达式今天就结束了,遥想几年前初次接触的时候,感觉这玩意真心玩不转啊,而时至今日,感觉这也没有什么难以理解的,确实还是有很大进步的,尤其是对smarty模板引擎有了一个更为清晰的认识.正则表达式学到最后,总是会抛出这个编写一个山寨的smarty模板引擎的话题出来练练手,今天就在大师的指导下,编写了这么一个山寨smarty,作为这次复习正则的一个句点吧. <?php  class template{ //存储模板引擎源文件目录 private $templateDir; //编译后的文

前端学PHP之Smarty模板引擎

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

Smarty模板引擎技术(一)

一.Smarty模板引擎简介 什么是smarty? Smarty是采用php写的一个模版引擎,设计的目的是要将php代码与html代码分离,使php程序员只专注于php代码的编写,网页美工只专注于网页的美化 没有模版引擎时出现的问题? html中php代码比重越来越大 页面的数量越来越多 程序设计与美工设计分工不明确 传统的php文件: 1. php代码跟html混编在一起,不利于程序员和美工的分工,程序员和美工不能同时修改一个文件 2.数据的传递同一页面传递,php数据在页面中的显示需要使用p