ThinkPHP模版引擎之变量输出详解

使用ThinkPHP开发有一定时间了,今日对ThinkPHP的模板引擎变量解析深入了解了一下,做出一些总结,分享给大家供大家参考。具体分析如下:

我们已经知道了在Action中使用assign方法可以给模板变量赋值,赋值后怎么在模板文件中输出变量的值呢?

如果我们在Action中赋值了一个name模板变量:

$name = 'ThinkPHP';$this->assign('name',$name);

使用内置的模板引擎输出变量,只需要在模版文件使用:

{$name}
模板编译后的结果就是

<?php echo($name);?>

最后运行的时候就可以在标签位置显示ThinkPHP的输出结果,注意模板标签的{和$之间不能有任何的空格,否则标签无效。普通标签默认开始标记是 {,结束标记是 },也可以通过设置TMPL_L_DELIM和TMPL_R_DELIM进行更改,例如,我们在项目配置文件中定义:

'TMPL_L_DELIM'=>'<{',  'TMPL_R_DELIM'=>'}>',

那么,上面的变量输出标签就应该改成:
<{$name}>

后面的内容我们都以默认的标签定义来说明,assign方法里面的第一个参数才是模板文件中使用的变量名称,如果改成下面的代码:

$name = 'ThinkPHP';$this->assign('name2',$name);

再使用{$name} 输出就无效了,必须使用 {$name2}才能输出模板变量的值了.如果我们需要把一个用户数据对象赋值给模板变量:

$User = M('name');$user = $User->find(1);$this->assign('user',$user);

也就是说$user其实是一个数组变量,我们可以使用下面的方式来输出相关的值:

{$user['name']}//输出用户的名称{$user['email']} //输出用户的email地址

如果$user是一个对象而不是数组的话.

$User = M('name');$User->find(1);$this->assign('user',$User);

可以使用下面的方式输出相关的属性值:

{$user:name}// 输出用户的名称{$user:email} // 输出用户的email地址

3.1版本以后,类的属性输出方式有所调整,支持原生的PHP对象写法,所以上面的标签需要改成:

{$user->name}// 输出用户的名称{$user->email} // 输出用户的email地址

为了方便模板定义,还可以支持点语法,例如,上面的

{$user['name']}// 输出用户的名称{$user['email']} // 输出用户的email地址

可以改成

{$user.name}{$user.email}

因为点语法默认的输出是数组方式,所以上面两种方式是在没有配置的情况下是等效的,我们可以通过配置TMPL_VAR_IDENTIFY参数来决定点语法的输出效果,以下面的输出为例:{$user.name}
如果TMPL_VAR_IDENTIFY设置为array,那么

{$user.name}和{$user['name']}等效,也就是输出数组变量.

如果TMPL_VAR_IDENTIFY设置为obj,那么

{$user.name}和{$user:name}等效,也就是输出对象的属性。

如果TMPL_VAR_IDENTIFY留空的话,系统会自动判断要输出的变量是数组还是对象,这种方式会一定程度上影响效率,而且只支持二维数组和两级对象属性。

如果是多维数组或者多层对象属性的输出,可以使用下面的定义方式:

{$user.sub.name}//使用点语法输出

或者使用

{$user['sub']['name']}// 输出三维数组的值  {$user:sub:name}// 输出对象的多级属性

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

参考来源: 
ThinkPHP模版引擎之变量输出详解
http://www.lai18.com/content/369153.html

延伸阅读

《PHP框架ThinkPHP学习》系列技术文章整理收藏

1Thinkphp实现MySQL读写分离操作示例

2使用ThinkPHP+Uploadify实现图片上传功能

3ThinkPHP调用百度翻译类实现在线翻译

4Thinkphp使用mongodb数据库实现多条件查询方法

5ThinkPHP实现多数据库连接的解决方法

6改写ThinkPHP的U方法使其路由下分页正常

7ThinkPHP实现将SESSION存入MYSQL的方法

8ThinkPHP连接数据库及主从数据库的设置教程

9ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结

10ThinkPHP基于PHPExcel导入Excel文件的方法

11thinkphp获取栏目和文章当前位置的方法

12ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法

13ThinkPHP无限级分类原理实现留言与回复功能实例

14ThinkPHP在新浪SAE平台的部署实例

15ThinkPHP控制器间实现相互调用的方法

16ThinkPHP实现带验证码的文件上传功能实例

17ThinkPHP写数组插入与获取最新插入数据ID实例

18ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整

19thinkphp使用literal防止模板标签被解析的方法

20ThinkPHP中RBAC类的四种用法分析

21ThinkPHP中__initialize()和类的构造函数__construct()用法分析

22ThinkPHP自动完成中使用函数与回调方法实例

23ThinkPHP实现动态包含文件的方法

24thinkphp实现发送邮件密码找回功能实例

25ThinkPHP实现支付宝接口功能实例

26Thinkphp搜索时首页分页和搜索页保持条件分页的方法

27ThinkPHP入口文件设置及相关注意事项分析

28ThinkPHP模版引擎之变量输出详解

29thinkphp实现上一篇与下一篇的方法

30ThinkPHP中url隐藏入口文件后接收alipay传值的方法

31ThinkPHP打开验证码页面显示乱码的解决方法

32ThinkPHP中使用ajax接收json数据的方法

33ThinkPHP内置jsonRPC的缺陷分析

34thinkphp3.0输出重复两次的解决方法

35thinkPHP实现表单自动验证

36Thinkphp中的curd应用实用要点

37浅谈thinkphp的实例化模型

38ThinkPHP 404页面的设置方法

39THINKPHP内容分页代码分享

40在Nginx上部署ThinkPHP项目教程

41浅析THINKPHP的addAll支持的最大数据量

42ThinkPHP提示错误Fatal error: Allowed memory size的解决方法

43ThinkPHP3.2.2的插件控制器功能

44ThinkPHP3.2.3数据库设置新特性

45ThinkPHP 3.2 版本升级了哪些内容

46thinkPHP学习笔记之安装配置篇

47Thinkphp调用Image类生成缩略图的方法

48解决ThinkPHP关闭调试模式时报错的问题汇总

49ThinkPHP文件缓存类代码分享

ThinkPHP模版引擎之变量输出详解相关推荐

  1. ThinkPHP模版引擎之变量输出具体解释

    ThinkPHP模版引擎之变量输出具体解释 使用ThinkPHP开发有一定时间了,今日对ThinkPHP的模板引擎变量解析深入了解了一下.做出一些总结,分享给大家供大家參考. 详细分析例如以下: 我们 ...

  2. java使用变量输出_JAVA定义变量与输出详解

    一些重要知识 一个源文件里只能有一个public类,其它类数量不限.文件名与public类名相同 java程序严格区分大小写 JAVA应用程序的执行入口是main方法固定写法:public stati ...

  3. html中使用volist要引入什么,thinkphp中volist标签使用案例详解

    这次给大家带来thinkphp中volist标签使用案例详解,thinkphp中volist标签使用的注意事项有哪些,下面就是实战案例,一起来看一下. 属性: name(必须):要输出的数据模板变量 ...

  4. python变量类型-Python 变量类型详解

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

  5. python指定变量类型_Python 变量类型详解

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...

  6. c语言结构体成员变量私有化,C语言中结构体变量私有化详解

    C语言中结构体变量私有化详解 背景介绍 操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚 ...

  7. php字段验证规则,ThinkPHP 自动验证及验证规则详解

    ThinkPHP 自动验证及验证规则详解 ThinkPHP 自动验证 ThinkPHP 内置了数据对象的自动验证功能来完成模型的业务规则验证.自动验证是基于数据对象的,而大多情况下数据对象是基于 $_ ...

  8. Python print函数及format()格式化输出详解

    今天继续给大家介绍Python相关知识,本文主要内容是Python print函数及format()格式化输出详解. 一.print()函数基本使用 print()函数是Python中用于向控制台输出 ...

  9. C++条件变量使用详解

    1. condition_variable介绍 在C++11中,我们可以使用条件变量(condition_variable)实现多个线程间的同步操作:当条件不满足时,相关线程被一直阻塞,直到某种条件出 ...

最新文章

  1. linux登录密码破解
  2. UVALive7670 Asa's Chess Problem,上下界费用流,另类解法
  3. 干货下载丨开源数据库安全管理
  4. ansible的命令操作模块6
  5. php设计模式课程---4、观察者模式的好处是什么
  6. moss item adding
  7. 如何让Mac在 Finder 顶部显示完整的文件路径
  8. linux下安装sg11,linux服务器怎么装SG11解密插件?
  9. SQL Server常用函数整理
  10. destoon php文件,Destoon 任意文件读取
  11. VoIP 软电话客户端实例
  12. 跨域 CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR
  13. 团队口号_激励口号_口号大全分享到:
  14. Ural 1671 - Anansi's Cobweb 倒过来做...并查集维护..
  15. 使用binlog备份恢复myqsl数据
  16. 网络安全——数据库基础知识
  17. ViewBinding和DataBinding的理解和区别
  18. 1034: 夏季促销
  19. ubuntu 编译安装opencv官网教程
  20. linux定时任务no crontab for root 解答

热门文章

  1. 你去过(gan)大(huo)年(che),Down机别烦我
  2. xxx.pth或者xxx.pt is a zip archive(did you mean to use torch.jit.load()?问题解决
  3. 《你拥有的最宝贵的财富是什么》作业
  4. PHP电商运费模板,拼多多运费模板怎么设置?怎么使用运费模板?
  5. 调整变速器后拨详细图文教程
  6. apache实现文件上传服务器,使用Apache的Fileupload工具实现文件上传
  7. C语言:n个数的阶乘之和
  8. JAVA中获得一个有中文的字符串的字节长度
  9. 用raptor计算计算机课成绩,RAPTOR程序设计例题参考答案课案
  10. python最强web框架fastapi,比肩go,nodejs