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();
开始也想过global来进行超全局传递,但是想想,貌似效率不高,而且每个引用的都这么写,想想越写越多,都是难以维护以及阅读的事情。必须让自己以及阅读者知道这个变量引用到模板中了,于是我眼睛紧盯
$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();