首頁 後端開發 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教學
1665
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 版本(在亞馬遜預訂)相同,但顧名思義,它具有更大的螢幕。兩個電子

Google Pixel 8 顯示問題:修復計畫可提供 3 年免費服務 Google Pixel 8 顯示問題:修復計畫可提供 3 年免費服務 Jun 15, 2024 pm 06:50 PM

自從 Google Pixel 8(亞馬遜售價約 513 歐元,限時優惠)推出以來,用戶抱怨顯示器上有垂直線的報告數量不斷增加。

See all articles