ThinkPHP で PHP 変数をテンプレートに転送する原理の簡単な分析

WBOY
リリース: 2016-06-13 12:53:05
オリジナル
848 人が閲覧しました

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();
ログイン後にコピー

テンプレート内で設定が見つからないというエラーが報告されました。テンプレートの参照が表示されているため、ここで宣言された変数はすべてクラスメソッドです。これは困ったことですか?

最初はスーパーグローバル転送のグローバルも考えましたが、よく考えたら効率が悪いようで、どのリファレンスもこう書いてある、考えてみれば書けば書くほど増えていきます。維持するのも読むのも難しいです。この変数がテンプレートで参照されていることを自分自身と読者に知らせる必要があるため、

に注目しました。

$this->assign()
ログイン後にコピー

一般的に、一般的なプロセスは次のとおりです。

1. array() の初期値を使用してクラス変数を宣言します

protected $_var = array();
ログイン後にコピー

2. assign メソッドを使用してローカル変数をクラス変数に転送します

$this->_var[$name] = $value;
ログイン後にコピー

3. メソッド表示で、extract 関数を使用して $this->_var を現在のメソッドのローカル変数に分解し、表示 でテンプレートを適用します。

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();
ログイン後にコピー


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート