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