PHP MVC问题

PHP MVC问题,php,Php,有人能告诉我将值从控制器传递到视图的最佳方式是什么吗?如果有人玩过Codeignator,他们就会明白我的意思。我查看了CIs代码,但找不到处理此问题的文件。我很想知道这是怎么做到的 谢谢 据我所知,不一定有“最好”的方法,但有一种常用的方法,我见过很多次,我自己也用过。它通常涉及关联数组,以及函数或 基本上,您所要做的就是使用将成为模板变量的键将数据设置为关联数组 //inside the controller $data['name'] = 'my name'; $data['zip'] =

有人能告诉我将值从控制器传递到视图的最佳方式是什么吗?如果有人玩过Codeignator,他们就会明白我的意思。我查看了CIs代码,但找不到处理此问题的文件。我很想知道这是怎么做到的

谢谢

据我所知,不一定有“最好”的方法,但有一种常用的方法,我见过很多次,我自己也用过。它通常涉及关联数组,以及函数或

基本上,您所要做的就是使用将成为模板变量的键将数据设置为关联数组

//inside the controller
$data['name'] = 'my name';
$data['zip'] = '90210';
$data
数组以某种方式直接或间接地传递到视图,并通过
extract()
或使用变量循环进行提取(实际上是一样的)。然后可以包含模板,并且变量位于局部范围内

//inside the view rendering process
extract($data);
//$name and $zip now exist
代码点火器遵循这个确切的程序。在最新版本(1.7.1)中的
system\libraries\Loader.php
中,有一个名为
view()
的函数,您可以在CI控制器中调用该函数来加载视图/模板(在CI中也是如此)。将数据数组作为第二个参数传递

view()
在同一个文件中调用名为
\u ci\u load()
的内部函数,该函数提取传递给它的数据(并执行一些其他古怪的缓存操作)。在本地函数作用域中,您的变量已经准备就绪,并且可以在后续的
include()
之后在模板内部进行操作,因为包含文件中发生的所有事情都存在于本地
\u ci\u load()
函数作用域中

我以前在一个快速而肮脏的自制MVC设置中使用了完全相同的设计。这是非常有效的。

据我所知,不一定有“最好”的方法,但有一种常用的方法,我见过很多次,我自己也用过。它通常涉及关联数组,以及函数或

基本上,您所要做的就是使用将成为模板变量的键将数据设置为关联数组

//inside the controller
$data['name'] = 'my name';
$data['zip'] = '90210';
$data
数组以某种方式直接或间接地传递到视图,并通过
extract()
或使用变量循环进行提取(实际上是一样的)。然后可以包含模板,并且变量位于局部范围内

//inside the view rendering process
extract($data);
//$name and $zip now exist
代码点火器遵循这个确切的程序。在最新版本(1.7.1)中的
system\libraries\Loader.php
中,有一个名为
view()
的函数,您可以在CI控制器中调用该函数来加载视图/模板(在CI中也是如此)。将数据数组作为第二个参数传递

view()
在同一个文件中调用名为
\u ci\u load()
的内部函数,该函数提取传递给它的数据(并执行一些其他古怪的缓存操作)。在本地函数作用域中,您的变量已经准备就绪,并且可以在后续的
include()
之后在模板内部进行操作,因为包含文件中发生的所有事情都存在于本地
\u ci\u load()
函数作用域中

我以前在一个快速而肮脏的自制MVC设置中使用了完全相同的设计。它非常有效。

您可能想试试它。我还没有试过代码点火器。

您可能想试试的。我还没有试过代码点火器。

在中,它非常简单

class IndexController {
 public function IndexAction {
  $this->view->name='Name';
 }
}
使用$this->view->xxxx在视图中设置变量。

在中,它非常简单

class IndexController {
 public function IndexAction {
  $this->view->name='Name';
 }
}

使用$this->view->xxxx在视图中设置变量。

这是非常特定于您的框架的(我想您正在滚动自己的),您可能需要提供更多的细节。这是非常特定于您的框架的(我想您正在滚动自己的),您可能需要提供更多的细节。