标签:
?
?
?
?
一个广告内容在一个页面的多个地方同时显示
<div>具体广告内容</div>
变量调剂器在linux系统里边称作"管道"
?
调节变量
????$name = "liNkEn";
????{$name} // liNkEn
????{$name|lower} 把变量调节为小写的 //linken
????{$name|upper} 把变量调节为大小的 //LINKEN
????{$name|count_charactor} 计算变量字符长度 //6
?
????变量经过"函数"调节后在输出,变量与函数中间使用 | 竖线连接
????变量没有在页面上正常输出,而是成为了后者调节函数的输入参数
????变量调节器:前者的输出是后者的输入
?
????
?
不同操作系统换行符号显示
?
?
?
总结:
?
练习:把smarty融入进自己的项目
?
两种类型缓存:
????①:缓存静态的html代码
????②:把数据库获得到的数据给缓存起来
?
????我们在页面上看到的信息是通过php程序生成出来,最终以html代码形式展现出来的。
????网站的信息,在相当一段时间不会随便发生变化,那么我们就把php生成好的html代码给缓存起来,下次用户再访问网站,就不用再次请求php解析,直接访问静态的html代码。
?
????缓存介质:文件、内存(使用最多)、数据库
????借助smarty实现静态html代码缓存
????在实际工作环境中使用最多的缓存是memcache内存缓存。缓存的是数据库的数据信息,并不是静态html代码。
????
????什么地方适合使用静态html代码缓存:
????门户新闻网站。
?
‘cache_lifetime‘ => 3600,
$smarty -> cache_lifetime = 20;
$smarty -> isCached(‘模板文件‘); 判断缓存是否存在
?
?
?
?
????
02.php
????$smarty = new Smarty();
????$smarty -> caching = 2;
????$smarty -> cache_lifetime = 20;
????$smarty -> display(‘02.html‘);
????不断有用户访问02.php,该情况caching=1/2效果一致。
?
02.php 生成静态页面(后台)
????$smarty = new Smarty();
????$smarty -> caching = 2;
????$smarty -> cache_lifetime = 20;
????$smarty -> display(‘02.html‘);
?
03.php 04.php 05.php访问静态文件(前台)
????$smarty = new Smarty();
????$smarty -> caching=2; //开启缓存,否则不可以使用缓存文件
????$smarty -> display(XXX); //首先判断缓存文件是否有效,否则重新生成缓存
?
????有好多缓存文件,缓存时间不一样,有的缓存1天,有的缓存3天,有的缓存7天
(这样把cache_lifetime Smarty.class.php的有效时间也设置最少7天以上)。
?
caching=2的作用是可以为不同文件设置不同的缓存时间。
?
1. 单模板多缓存
????
局部不缓存应用场景:首页面,有用户登录信息,显示用户名的部分就不能被缓存。
具体应用:
????
????
与单模板多缓存类似
display(‘04.html‘,编号); 给每个静态页面生成一个编号
?
????1. 生成缓存集合
????
2. 清除缓存集合
?
总结:
????缓存
????设置缓存 caching=1/2;
????判断缓存是否存在 isCached()
????缓存文件删除 clearCache(‘模板名称‘)
???????????????? clearAllCache();
????单模板多缓存制作 display(‘模板‘,每个静态页面的标志cache_id);
????局部不缓存
????????{nocache}{/nocache}
????????{$name nocache}????
????????assgin(‘name‘,‘tom‘,true);
????????insert_age()函数应用
????缓存集合
作业:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
???? ?
???? ?
?
?
e) 单模板多缓存
????数据分页要为每个分页都制作缓存
????display("模板",编号page_id);
?
答:是把"php缓冲区"内容获得到,生成静态文件。
????
//ob_start(); 开启php缓冲区
//ob_flush(); 输出php缓冲区内容
//ob_get_contents(); 获得php缓冲区内容
//ob_clean() 清空php缓冲区内容
//ob_get_clean(); 获得php缓冲区内容,并且清空缓冲区
//flush()输出浏览器缓冲区内容
?
7. ????????php程序被访问执行流程与缓存关系????
????????
?
编译文件: html+php混合代码文件
缓存文件:html静态代码
?
执行顺序关系:
????如果开启缓存,首先执行缓存文件
????没有开启缓存,执行编译文件即可
可以通过过滤器集中处理我们的"编译文件"和"缓存文件"
尤其在MVC框架里边使用,只要在父类控制器集中设置好过滤器,所有的编译文件和缓存文件都会起作用
?
?
高级特性
b) 具体使用数据对象
我们可以给模板传递一个对象
在模板中对象的"属性"和"方法"都可以使用
?
对象注册研究的是对象的方法。
1. 对象注册功用:
对象注册 可以限制模板中对象访问的自己的具体方法。
2. 注册对象只对方法其作用,不关系属性
总结:
?
????smarty与已有项目结合:
????
????
????调试自动加载函数
?
__autoload() 可以单独使用,如果系统有多个autoload,则通过spl_autoload_register提高访问基本。
?
?
前置操作$tpl参数原理分析:
?
{$name|lower} {$name|truncate:20}
2. 自定义变量调节器
????自定义信息字号大小显示
????$smarty -> assign(‘addr‘, ‘beijing‘);
????{$addr}
????{$addr|change_size:30}
????<span tyle="font-size:30px;">beijing</span>
具体使用
?
?
1. {php}。。。{/php} 不推荐
3.1已经废除,需要SmartyBC支持
smarty3.1.14版本,是一个php5的高级版本模板引擎
该版本内部对函数名字有自己的命名风格:驼峰式命名
registerObject(新)-------------------register_object(旧)
registerFilter(新)--------------------register_filter(旧)
?
?
2. {strip}。。。{/strip}删除多余空白和回车
模板文件:注释、换行、回车,这样模板文件看起来可读性好
编译文件:模板文件的换行、回车在编译文件中也会体现出来,我们可以使用strip标签把编译文件的换行、回车给删除掉。
?
$smarty -> debugging = true;显示调试窗口
?
{fetch file="http://www.baidu.com"}
?
交替出现
生成图片标签
file
width
height
href=图片超链接地址
表格标签
{html_checkboxes} {html_radios} {html_options}
?
????
?
$compile_check =true; [编译检查变量]
一旦有关模板文件或配置文件被更新,编译文件将会被重建
在使用smarty时候,如果模板文件有发生改变,则立刻会显示已经更改
???????????????????? 如果php程序发生变化,页面不会立刻显示更改(需要更新编译文件)
?
该属性$compile_check如果为真,则模板文件或配置文件发生变化,就重新生成编译文件。
?
1. append和assign区别使用
append:把变量放入smarty对象的数组里边
assign:把变量放入smarty对象的变量里边
????????
?
????
7.
????display() 展示模板信息
fetch()???? 获得模板信息
display() = echo fetch();
总结:
?
作业:
????1. 把smarty与之前的中级项目融合起来
????2. 在中级项目里边把smarty的布局继承效果体现出来
????3. 把数据从数据库获得出来,append(),再模板中通过smarty展现foreach
????4. 如果页面有公共部分,就把公共部分代码放到一个固定文件里边,其他模板include包含
????5. 把首页设置为缓存页面,用户信息设置"局部不缓存"
?
?
?
?
?
?
?
?
?
?
?
?
模板:静态html文件就是模板
一般php 程序文件是 php程序和html代码混编 样式。
?
程序员专门开发php程序
html静态页面是美工人员开发
?
以上代码php和html有结合,如果系统升级或维护,这段代码就会使得程序员和美工互相推诿。
?
smarty模板技术的出现,会使得php程序和html代码在物理形式上有分离。
?
????
面试需要。
即使不使用smarty,也需要使用其他模板引擎。
????
?
?
?
?
6.1系统保留变量
6.2配置变量
6.3通过配置变量config让页面样式整体都发生改变
?
总结:
?
?
assign()
????Smarty的父类Smarty_Internal_TemplateBase的父类Smarty_Internal_Data
display()
????Smarty的父类Smarty_Internal_TemplateBase
?
assign是把信息赋予给一个具体变量,如果名字重复又覆盖情况
append是把信息赋予给一个数组,名字重复也可以同时存在,在访问的时候需要通过数组下标访问具体元素信息
?
????????
?
【在模板中遍历数组】
1. foreach 具体使用
?
foreach可以遍历索引和关联数组
section只可以遍历索引数组
????????
?
while循环
???? ?
????
if elseif else
????
????
?
options属性是values和output的集合属性
?
?
通过标签assign定义模板变量
????
?
总结:
?
作业:
?
?
???? ?
?
?
?
标签:
原文地址:http://www.cnblogs.com/yizhinageyuanfang/p/5518569.html