首页 后端开发 php教程 ThinkPHP的PHP变量传送到模板原理浅析

ThinkPHP的PHP变量传送到模板原理浅析

Jun 13, 2016 am 11:15 AM
display list this

ThinkPHP的PHP变量传递到模板原理浅析

程序员就应该是站在前人的肩膀上前进,所以,分析优秀的开源产品以及框架我觉得是程序员必做事情。

最近在尝试自己独立编写一个程序,在后台用到了php模板,简单来说,就是模板中用原生态的PHP代码做循环、显示内容。

$this->display();
登录后复制


这个对于使用thinkphp的朋友应该是很熟悉了,就是一个引用模板的代码,我也是这么做的。开始的时候,我是这么写的

		$list = $this->query('select * from %pre%yiciconf where left(`key`,4)=\'sys_\'');		$setting = array();		if (!empty($list)) {			foreach ($list as $value){				$setting[$value['key']] = $value['value'];			}		}				$this->display();
登录后复制

模板中居然报错,说找不到setting,悲剧啊,因为模板的引用在display中,所以这里声明的变量根本没法进去,都是类方法,这是闹哪样,蛋碎。

开始也想过global来进行超全局传递,但是想想,貌似效率不高,而且每个引用的都这么写,想想越写越多,都是难以维护以及阅读的事情。必须让自己以及阅读者知道这个变量引用到模板中了,于是我眼睛紧盯

$this->assign()
登录后复制

总体来说,大致流程如下:

1、声明一个初始值为array()的类变量

protected $_var = array();
登录后复制

2、使用方法assign将局部变量传递到类变量中

$this->_var[$name] = $value;
登录后复制

3、在方法display中,使用extract函数将$this->_var分解成当前方法的局部变量,然后在display中应用模板

include $tplfile;
登录后复制

最后:

		$list = $this->query('select * from %pre%yiciconf where left(`key`,4)=\'sys_\'');		$setting = array();		if (!empty($list)) {			foreach ($list as $value){				$setting[$value['key']] = $value['value'];			}		}		$this->assign('setting', $setting);		$this->display();
登录后复制


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
由于泄露的自拍显示屏增加了以前价格实惠的相机系列的复杂性,富士 X-M5 的价格预期上升 由于泄露的自拍显示屏增加了以前价格实惠的相机系列的复杂性,富士 X-M5 的价格预期上升 Sep 07, 2024 am 09:34 AM

富士胶片粉丝最近对 X-T50 的前景感到非常兴奋,因为它重新推出了面向预算的富士胶片 X-T30 II,该胶片在 1,000 美元以下的 APS-C 类别中非常受欢迎。不幸的是,随着 Fujifilm X-T50 的推出

Apple Studio Display 的电源线是可拆卸的,但需要特殊工具 Apple Studio Display 的电源线是可拆卸的,但需要特殊工具 May 17, 2023 pm 03:05 PM

AppleStudioDisplay现已在商店正式发售,全球已有多家客户购买了该产品。与ProDisplayXDR不同,StudioDisplay有一个独特的电源连接器,似乎是不可拆卸的。事实证明,电缆是可拆卸的,但您需要使用特殊工具才能将其卸下。苹果在其网站上表示,StudioDisplay的电源线是不可拆卸的——而且很多用户都这么认为。那是因为用你的双手移除电缆似乎是不可能的,但幸运的是,电缆可以从显示器上分离。,Apple有一个特殊的工具,用于从其新的StudioDispl

比较:Apple Studio Display vs Samsung Smart Monitor M8 比较:Apple Studio Display vs Samsung Smart Monitor M8 May 11, 2023 pm 10:46 PM

三星智能显示器M8与AppleStudio显示器:设计和尺寸自推出以来,AppleStudioDisplay就被比作iMac,由相对简单的L形支架上的相对薄的面板组成。这是一种众所周知且深受喜爱的美学,三星似乎借用了它的展示。三星SmartMonitorM8采用了与外观非常相似的支架上的薄屏幕的相同想法。一些次要元素有所不同,例如左下角的小部分有点突出,三星的下巴很薄,但它们在基本设计方面似乎很接近。三星似乎从24英寸iMac中获得了很多灵感。苹果的显示器比三星的要小

display是什么意思 display是什么意思 Oct 26, 2023 am 11:50 AM

display通常指的是将数据、信息或结果以某种方式展示给用户或输出到屏幕或其他设备上的操作或功能。具体含义:1、在命令行界面(CLI)中,display可能指的是将文本、表格或其他格式的数据输出到终端窗口,供用户查看或分析;2、在图形用户界面(GUI)中,display可能指的是将图像、文本、图表等内容显示在应用程序的窗口或界面上,以供用户交互或浏览等等。

Boot Camp 更新以支持 Apple Studio Display Boot Camp 更新以支持 Apple Studio Display May 20, 2023 pm 11:34 PM

在Mac上运行Windows的IntelMac用户现在可以更新BootCamp中的驱动程序,以支持Apple的StudioDisplay。Apple会定期更新BootCamp,以引入对新硬件的支持,以及典型的兼容性和性能改进。在3月份的软件更新中,Apple已启用BootCamp以与新的StudioDisplay配合使用。将BootCamp带到6.1.17版的更新引入了两个关键支持元素。首先,它增加了对StudioDisplay的兼容性,确

display有哪些取值 display有哪些取值 Nov 20, 2023 pm 05:28 PM

display的取值有block、inline、none、inline-block、flex、grid、table、inline-table和list-item等。详细介绍:1、block,将元素渲染为块级元素,块级元素在页面上形成一个块,并且独占一行;2、inline,将元素渲染为内联元素。内联元素不会独占一行,可以与其他元素并排;3、none,此值指定元素不会在页面上等等。

Google Pixel 9 Pro XL 在 DxOMark'全球”智能手机相机排名中排名第二 Google Pixel 9 Pro XL 在 DxOMark'全球”智能手机相机排名中排名第二 Aug 23, 2024 am 06:42 AM

谷歌的新 Pixel 9 系列推出了之前系列中没有的新型号 Pixel 9 Pro XL。它本质上与非 XL 版本(在亚马逊预订)相同,但顾名思义,它具有更大的屏幕。两个电子

谷歌 Pixel 8 显示问题:修复计划可提供 3 年免费服务 谷歌 Pixel 8 显示问题:修复计划可提供 3 年免费服务 Jun 15, 2024 pm 06:50 PM

自从 Google Pixel 8(亚马逊售价约 513 欧元,限时优惠)推出以来,用户抱怨显示屏上有垂直线的报告数量不断增加。这可以通过不同的方式体现出来——颜色和颜色。

See all articles