ホームページ バックエンド開発 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

富士フイルム X-M5 の価格予想が上昇、自撮りディスプレイの流出で以前は手頃な価格だったカメララインが複雑化 富士フイルム X-M5 の価格予想が上昇、自撮りディスプレイの流出で以前は手頃な価格だったカメララインが複雑化 Sep 07, 2024 am 09:34 AM

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

Apple Studio Display の電源コードは取り外し可能ですが、特別な工具が必要です Apple Studio Display の電源コードは取り外し可能ですが、特別な工具が必要です May 17, 2023 pm 03:05 PM

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

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

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

それが何を意味するのかを表示する それが何を意味するのかを表示する Oct 26, 2023 am 11:50 AM

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

Boot Camp が Apple Studio Display をサポートするように更新されました Boot Camp が Apple Studio Display をサポートするように更新されました May 20, 2023 pm 11:34 PM

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

Google Pixel 9 Pro XLがDxOMarkの「グローバル」スマートフォンカメラランキングで2位にランクイン Google Pixel 9 Pro XLがDxOMarkの「グローバル」スマートフォンカメラランキングで2位にランクイン Aug 23, 2024 am 06:42 AM

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

表示にはどのような値がありますか? 表示にはどのような値がありますか? Nov 20, 2023 pm 05:28 PM

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

Google Pixel 8 のディスプレイの問題: 修理プログラムにより 3 年間の無料サービスが可能 Google Pixel 8 のディスプレイの問題: 修理プログラムにより 3 年間の無料サービスが可能 Jun 15, 2024 pm 06:50 PM

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

See all articles