• 技术文章 >后端开发 >php教程

    ThinkPHP的PHP变量传送到模板原理浅析

    2016-06-13 12:53:05原创208
    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();


    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:value setting this display list
    上一篇: 刚刚看了某网站,发现一个图片攻击有关问题,如何防范 下一篇: 数据的格式话有关问题
    大前端线上培训班

    相关文章推荐

    • 采集微信平台实时消息json有关问题 • xml解决思路 • php session有关问题 • 关于页面pv统计的有关问题

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网