MySQL-php框架中$this->display()是如何获取本方法定义的变量并传递到模板里面的?

发布于 2016-11-16 10:45:58 字数 383 浏览 1197 评论 3

我用thinkphp,控制器要传递变量给模板时候,只要在控制器方法里面定义任意多个变量,然后后面加上一句:
$this->display(),
方法内的全部变量都能自动传递到模板里面了。

这个是怎么实现的??什么原理?

变量要传到函数里面,除了在括号里面传值,不能就只能用global了吗?框架既没有global,又没有括号传参,控制器方法的变量是怎么跑到模版里面去的?

我自己写的框架,没这个功能,要传变量给模板只能这样:$this->display($abc);为了模板那边接收方便,我一般只传一个变量,控制器这边有多个=变量的就压成一个数组传过去。看起来很土鳖的感觉。

怎么办呢这个???怎写能写一个不用括号赋值就能自动把控制器变量都传到模板的功能?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清晨说ぺ晚安 2017-04-27 01:05:37

我自己写的时候是这么写的:

class Controller{
protected $view_vars = array();

public function __set($var,$val){
$this->view_vars[$var]=$val;
}
public function display($tpl){
$view = new View();
$view->display($tpl,$this->view_vars);
}
}

class View{

public function display($tpl,$data){
extract($data);
require $tpl;
}
}

class IndexController extends Controller{
public function index(){
$this->title = 'asdf';
$this->display('index');
}

}

主要是extract函数。。。你看看这个函数就了解了。

虐人心 2017-01-29 01:18:06

在controller里include 模板文件,模板里便可以使用类里的局部变量 。 ArPHP 我自己写了个php框架,呵呵 去试试

晚风撩人 2016-12-21 08:27:14

模板最终还是php代码,传递变量只是把关键字替换而已。
例:
模板类有字符“{$username}”,php代码替换"{$username}"为"<?php echo $username?>"
去google下模板原理

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文