smarty学习笔记一

PHP本身就是一种标签语言, <?php echo $title; ?>

允许代码用标签的形式任意嵌套在html,

因此,我们可以用PHP自身的这种特性,完成controllerview的分离.

1:Smarty可以协助我们分离PHPhtml代码就是记html制作人员看不到PHP标签

2:也可以对网站进行缓存(重要)

3:面试是要用到

4:体会模板的思想

1:Cotrollerview的分离是一种功能上的分离,是一种分工的思想.

phphtml代码的分离,仅是代码层面或视觉层面上的分离.

2:smartyMVC有什么关系?

没关系.

Smarty完成的仅是代码分离.

3:不用smarty,仍然是能够完成MVC模式的开发

Smarty的一些负面思考:

1:混杂在HTML代码中smarty标签和PHP代码.

对于web前端开发人员来说,没有实质区别

2:在实际开发中,html模板-->smarty模板的制作,依然是由PHPer来完成的

3:解析,编译本身消耗性能

4:增多了很多变量,(页面内的变量,都要赋值到smarty对象-->_tpl_vars 属性上,多了一个变量的副本)

Smarty模板类的工作流程

1:引入smarty模板类

2:assign赋值把外界变量传到对象内部(存在一个属性上)

3:display (编译模板,把标签模板编译成 html+php混杂的形式)

4:运行编译后的模板


Smarty的引入

Smarty是一个类引入过程与普通的类没有区别

1:include,require包含此文件

2:实例化

Smarty的配置

$template_dir    =  'templates';  // 模板文件的所在目录

$compile_dir     =  'templates_c'; // 编译后的文件所在目录

$config_dir      =  'configs'; // 允许独立的配置文件存在,并且配置文件如果多了,允许单独放在一个目录里,

$cache_dir = 'cache'  // 代表缓存文件的存放目录

plugins_dir     =  array('plugins','p2','p3');  // 插件目录(如果自行开发插件,可能会用到)

left_delimiter  =  '{';  // 标签的左分界符

Right_delimiter = '}'   // 标签的右分界符

Caching = 0/1/2 // 是否开启缓存

cache_lifetime = 3600 秒 // 缓存生命周期

Smarty的赋值

1: $smarty->assign('key',value);   

发生的变化$smarty->_tpl_vars[key] = value;

2: 如果assign($arr)中的第一个参数是数组

则会循环数组,把数组的每一个单元追加到_tpl_vars属性上

3:append追加赋值

如果需要把多个值,赋给同一个标签变量不必把多个值形成数组然后赋值,

可以通过append,往一个标签反复追加值.

:

$smarty->append('goods','自行车');

$smarty->append('goods','火车');

此时推论 $smarty->_tpl_vars['goods'] = array(自行车,火车);

如果append进去的值是数组,并且第3merge参数为true,则会把数组单元逐个添加到goods数组里去.

$smarty->append('goods',array('name'=>'刘备','age'=>28),true);

此时, $smarty->_tpl_vars['goods'] = array(自行车,火车,'name'=>'刘备','age'=>28);

如果是$smarty->append('goods',array('name'=>'刘备','age'=>28),false);

此时, $smarty->_tpl_vars['goods'] = array(自行车,火车,array('name'=>'刘备','age'=>28));

Smarty模板中,对变量的引用 

变量来源

1:assign赋值得到的变量 存储在_tpl_vars属性中

2:$smarty系统变量对于cookie,session,get,post,$_SERVER等信息,存储在_smarty属性中

Smarty会自动捕捉,并保存起来,形成系统变量,可以直接用标签来引用.

3:从配置文件读取的变量 存储在_config属性中

1.1 对于assign赋值得到的变量

对于字符串型,数值型直接通过 $标签名 来引用

1.2 对于数组变量

如果键是字符串,则用$标签名.

如果键是数字则用 $标签名[]

1.3 对于对象方式

$标签名->属性名 来引用对象的属性值

$标签名->方法() 来调用对象的方法的返回值

2.1 smarty中的系统变量

$smarty开头

: $smarty.now, 被 解析成 time();

$smarty.get.key ---> $_GET[key]

$smarty.const.常量名 ---> echo 常量名

3.1 从配置文件得到的变量

配置文件可以用来存储常用且很少变的数据,比如网站名,备案号

通过配置文件得到这些信息,不必去读数据库,可以省一些数据库的开销.

配置文件的写法;

配置项1=1

配置项2=2

配置文件的载入

Config_load  file="xxx.conf" 

配置文件中变量的引用

$smarty.config.配置项

或者 #配置项#


模板中的逻辑控制

MVC的角度看,在模板中加逻辑控制不正确的,

但是有时,不同的场景下,模板的差异非常小时就比较适合在模板里加逻辑控制,

可以减少模板的数量.

$smarty->_foreach 属性是一个数组

如果smartyforeachname属性name="abc"

smarty->_foreach['abc'] = array(total=>循环体个数,iteration=0);  

然后每循环一次,iteration 递增1

可以引用$smarty.foreach.foreahcname.key的属性

Key =

total : 循环个数

Iteration: 当前循环次数

Index : 当前索引, iteration-1

First: 判断是否是第1次循环

Last: 判断是否是最后一次循环

注意:foreachname不能重复

Foreach中的key=k, item=v

会影响到同名的标签,请注意,标签不要和foreach中的标签同名.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值