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();

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Fujifilm-Fans waren kürzlich sehr gespannt auf die Aussicht auf die X-T50, da sie eine Neuauflage der preisgünstigen Fujifilm X-T30 II darstellte, die in der APS-C-Kategorie unter 1.000 US-Dollar recht beliebt geworden war. Leider ist die Fujifilm X-T50 auf den Markt gekommen

Wir berichten häufig über Geräte, die auf Displays mit elektronischer Tinte basieren, wie zum Beispiel E-Reader. Die Technologie bietet eine Reihe von Vorteilen: Sie kann in hellen Umgebungen ohne Hintergrundbeleuchtung gelesen werden und benötigt beim Schalten ohne Licht nur Strom

Samsung Smart Display M8 vs. Apple Studio Display: Design und Größe Seit seiner Einführung wird das Apple Studio Display mit dem iMac verglichen, da es aus einem relativ dünnen Panel auf einem relativ einfachen L-förmigen Ständer besteht. Es ist eine bekannte und beliebte Ästhetik, und Samsung scheint sie für seine Präsentation übernommen zu haben. Der Samsung SmartMonitor M8 nutzt die gleiche Idee eines dünnen Bildschirms auf einem Standfuß, der sehr ähnlich aussieht. Einige kleinere Elemente unterscheiden sich, wie zum Beispiel der kleine Bereich in der unteren linken Ecke, der etwas hervorsteht, und das sehr dünne Kinn des Samsung, aber vom grundlegenden Design her scheinen sie ähnlich zu sein. Samsung scheint sich stark vom 24-Zoll-iMac inspirieren zu lassen. Das Display von Apple ist kleiner als das von Samsung

Apple Studio Display ist jetzt offiziell im Handel erhältlich und viele Kunden auf der ganzen Welt haben das Produkt gekauft. Im Gegensatz zum ProDisplayXDR verfügt das StudioDisplay über einen einzigartigen Stromanschluss, der scheinbar nicht abnehmbar ist. Es stellt sich heraus, dass das Kabel abnehmbar ist, Sie benötigen jedoch ein Spezialwerkzeug, um es zu entfernen. Apple gibt auf seiner Website an, dass das Netzkabel des Studio Displays nicht abnehmbar sei – und das denken viele Nutzer auch. Das liegt daran, dass es scheinbar unmöglich ist, das Kabel mit den Händen zu entfernen, aber glücklicherweise lässt sich das Kabel vom Monitor lösen. Apple verfügt über ein spezielles Tool zum Extrahieren von Informationen aus seinem neuen StudioDispl

Listenoperation //Einen Wert vom Kopf der Liste einfügen. $ret=$redis->lPush('city','guangzhou');//Fügen Sie einen Wert vom Ende der Liste ein. $ret=$redis->rPush('city','guangzhou');//Erhalten Sie die Elemente im angegebenen Bereich der Liste. 0 steht für das erste Element der Liste, -1 für das letzte Element und -2 für das vorletzte Element. $ret=$redis->l

Unter Anzeige versteht man in der Regel den Vorgang oder die Funktion, dem Benutzer Daten, Informationen oder Ergebnisse auf irgendeine Weise anzuzeigen oder auf einem Bildschirm oder einem anderen Gerät auszugeben. Spezifische Bedeutung: 1. In der Befehlszeilenschnittstelle (CLI) kann sich „Anzeige“ auf die Ausgabe von Daten in Text, Tabellen oder anderen Formaten im Terminalfenster beziehen, damit Benutzer sie anzeigen oder analysieren können. 2. In der grafischen Benutzeroberfläche (GUI) „Anzeige“. kann sich auf die Anzeige von Bildern, Text, Diagrammen und anderen Inhalten im Anwendungsfenster oder auf der Benutzeroberfläche zur Benutzerinteraktion oder zum Durchsuchen usw. beziehen.

IntelMac-Benutzer, die Windows auf einem Mac ausführen, können jetzt ihre Treiber in BootCamp aktualisieren, um Apples StudioDisplay zu unterstützen. Apple aktualisiert BootCamp regelmäßig, um Unterstützung für neue Hardware sowie typische Kompatibilitäts- und Leistungsverbesserungen einzuführen. Im Software-Update vom März hat Apple BootCamp für die Zusammenarbeit mit dem neuen StudioDisplay aktiviert. Das Update, das BootCamp auf Version 6.1.17 bringt, führt zwei wichtige Supportelemente ein. Erstens wird die Kompatibilität mit StudioDisplay hinzugefügt und sichergestellt

Zu den Anzeigewerten gehören Block, Inline, None, Inline-Block, Flex, Grid, Table, Inline-Table und List-Item. Detaillierte Einführung: 1. Block, der Elemente in Elemente auf Blockebene umwandelt, bildet einen Block auf der Seite und belegt nur eine Zeile. 2. Inline, wodurch Elemente in Inline-Elemente umgewandelt werden. Inline-Elemente belegen keine eigene Zeile und können neben anderen Elementen stehen. 3. Keine, dieser Wert gibt an, dass das Element nicht auf der Seite usw. sein wird.
