ThinkPHP的PHP变量传送到模板原理浅析
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();

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

富士膠片粉絲最近對 X-T50 的前景感到非常興奮,因為它重新推出了預算導向的富士膠片 X-T30 II,該膠片在 1,000 美元以下的 APS-C 類別中非常受歡迎。不幸的是,隨著 Fujifilm X-T50 的推出

AppleStudioDisplay現已在商店正式發售,全球已有多家客戶購買了該產品。與ProDisplayXDR不同,StudioDisplay有一個獨特的電源連接器,似乎是不可拆卸的。事實證明,電纜是可拆卸的,但您需要使用特殊工具才能將其卸下。蘋果在網站上表示,StudioDisplay的電源線是不可拆卸的——而且很多用戶都這麼認為。那是因為用你的雙手移除電纜似乎是不可能的,但幸運的是,電纜可以從顯示器上分離。 ,Apple有一個特殊的工具,用於從其新的StudioDispl

三星智慧顯示器M8與AppleStudio顯示器:設計和尺寸自推出以來,AppleStudioDisplay就被比作iMac,由相對簡單的L形支架上的相對薄的面板組成。這是一種眾所周知且深受喜愛的美學,三星似乎借用了它的展示。三星SmartMonitorM8採用了與外觀非常相似的支架上的薄螢幕的相同想法。一些次要元素有所不同,例如左下角的小部分有點突出,三星的下巴很薄,但它們在基本設計方面似乎很接近。三星似乎從24吋iMac中獲得了很多靈感。蘋果的顯示器比三星的小

display通常指的是將資料、資訊或結果以某種方式展示給使用者或輸出到螢幕或其他裝置上的操作或功能。具體意義:1、在命令列介面(CLI)中,display可能指的是將文字、表格或其他格式的資料輸出到終端窗口,供使用者查看或分析;2、在圖形使用者介面(GUI)中, display可能指的是將圖像、文字、圖表等內容顯示在應用程式的視窗或介面上,以供使用者互動或瀏覽等等。

在Mac上運行Windows的IntelMac用戶現在可以更新BootCamp中的驅動程序,以支援Apple的StudioDisplay。 Apple會定期更新BootCamp,以引入對新硬體的支持,以及典型的兼容性和效能改進。在3月的軟體更新中,Apple已啟用BootCamp以與新的StudioDisplay搭配使用。將BootCamp帶到6.1.17版的更新引入了兩個關鍵支援元素。首先,它增加了對StudioDisplay的兼容性,確

display的取值有block、inline、none、inline-block、flex、grid、table、inline-table和list-item等。詳細介紹:1、block,將元素渲染為區塊級元素,區塊級元素在頁面上形成一個區塊,並且獨佔一行;2、inline,將元素渲染為內聯元素。內聯元素不會獨佔一行,可以與其他元素並排;3、none,此值指定元素不會在頁面上等等。

谷歌的新 Pixel 9 系列推出了先前系列中沒有的新型號 Pixel 9 Pro XL。它本質上與非 XL 版本(在亞馬遜預訂)相同,但顧名思義,它具有更大的螢幕。兩個電子

List操作//從list頭部插入一個值。 $ret=$redis->lPush('city','guangzhou');//從list尾部插入一個值。 $ret=$redis->rPush('city','guangzhou');//取得清單指定區間中的元素。 0表示列表第一個元素,-1表示最後一個元素,-2表示倒數第二個元素。 $ret=$redis->l
