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 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











富士フイルムのファンは最近、X-T50 の登場に非常に興奮していました。X-T50 は、1,000 ドル以下の APS-C カテゴリーで非常に人気となっていた低価格志向の富士フイルム X-T30 II の再発売を提示したからです。残念ながら、富士フイルム X-T50 の発売に伴い

Apple Studio Display は現在、店舗で正式に販売されており、世界中の多くのお客様が製品を購入しています。 ProDisplayXDR とは異なり、StudioDisplay には取り外しできないように見える独自の電源コネクタがあります。ケーブルは取り外し可能であることがわかりましたが、取り外すには特別なツールが必要です。 Apple は Web サイトで、Studio Display の電源コードは取り外し可能ではないと述べており、多くのユーザーもそう考えています。というのは、ケーブルを手で外すのは不可能に思えますが、幸いなことにケーブルはモニターから取り外すことができます。 , Appleは、新しいStudioDisplから情報を抽出するための特別なツールを持っています。

Samsung Smart Display M8 と Apple Studio Display: デザインとサイズ 発売以来、Apple Studio Display は、比較的シンプルな L 字型スタンドに比較的薄いパネルを搭載した iMac と比較されてきました。これはよく知られ、愛されている美学であり、サムスンはプレゼンテーションにそれを借用したようです。 Samsung SmartMonitor M8 は、非常によく似たスタンド上の薄型スクリーンという同じアイデアを使用しています。左下隅の小さな部分が少し突き出ていることや、Samsungのあごが非常に薄いなど、いくつかの細かい要素が異なりますが、基本的なデザインの点では近いようです。サムスンは24インチiMacから多くのインスピレーションを得たようだ。 AppleのディスプレイはSamsungのものより小さい

ディスプレイとは通常、何らかの方法でデータ、情報、結果をユーザーに表示するか、画面やその他のデバイスに出力する操作または機能を指します。具体的な意味: 1. コマンド ライン インターフェイス (CLI) では、表示とは、ユーザーが表示または分析できるように、テキスト、テーブル、またはその他の形式でデータを端末ウィンドウに出力することを指す場合があります; 2. グラフィカル ユーザー インターフェイス (GUI) では、表示ユーザーの対話やブラウジングなどのために、アプリケーション ウィンドウまたはインターフェイス上に画像、テキスト、グラフ、その他のコンテンツを表示することを指す場合があります。

Mac 上で Windows を実行している IntelMac ユーザーは、Apple の StudioDisplay をサポートするために BootCamp でドライバーを更新できるようになりました。 Apple は BootCamp を定期的に更新して、新しいハードウェアのサポートや一般的な互換性とパフォーマンスの向上を導入しています。 3 月のソフトウェア アップデートで、Apple は BootCamp が新しい StudioDisplay と連携できるようにしました。 BootCamp をバージョン 6.1.17 にするアップデートでは、2 つの主要なサポート要素が導入されています。まず、StudioDisplay との互換性が追加され、

Google の新しい Pixel 9 シリーズには、以前のラインナップには存在しなかった新しいバリエーションである Pixel 9 Pro XL が導入されました。これは基本的に非 XL バージョン (Amazon で予約注文) と同じですが、名前が示すように、画面が大きくなっています。二人は

表示の値には、block、inline、none、inline-block、flex、grid、table、inline-table、list-item が含まれます。詳細な紹介: 1. block: 要素をブロックレベルの要素にレンダリングします。ブロックレベルの要素はページ上のブロックを形成し、1 行だけを占有します。2. inline: 要素をインライン要素にレンダリングします。インライン要素は、それ自体では 1 行を占有せず、他の要素と並べることができます。3. none、この値は、要素がページ上にないことを指定します。

GooglePixel 8 (Amazon で約 513 ユーロ、期間限定セール) の発売以来、ディスプレイの縦線に関する苦情のユーザーからの報告が増加しています。これは色や色など、さまざまな形で現れる可能性があります。
