视图文件如何从控制器获取变量



我是一名学生,是PHP的新手。在搜索了很多之后,我仍然不明白视图文件是如何从控制器中获得变量的。我从Controller.php类中获得了函数view((。

public function view($view, $data=[])
{
require_once "./mvc/views/".$view.".php";
}

我得到了一个HomeController.php扩展控制器

function toTheView($x,$y){
$model = $this->model("User");
$sum = $model->Sum($x,$y);
$this->view("calc", compact('sum'));
}

这是我的calc.php视图文件。

<h3><?php echo $data["sum"]; ?></h3>

正如您所看到的,calc.php不需要来自Controller.phpHomeController.php的任何文件,但它是如何显示该变量的?我的IDE在calc.php中的那一行显示红色警报,但它仍然有效。

谢谢你帮我。

您的require_once包括该位置的文件内容,因此您的视图字段可以访问同一范围内的任何变量,因此它可以使用从public function view($view, $data=[])传递的变量,也可以访问$this

最后,你的代码看起来是这样的:

public function view($view, $data=[])
{
// after executing: require_once "./mvc/views/".$view.".php";
<h3><?php echo $data["sum"]; ?></h3>
}

您可以使用get_defined_vars作为阵列并使用extract将其转换为变量

示例:HomeController.php

function toTheView($x,$y){
$model = $this->model("User");
$sum = $model->Sum($x,$y);
$this->view("calc", get_defined_vars());
}

Controller.php类的view((

public function view($view, $data=[])
{
extract($data);
require_once "./mvc/views/".$view.".php";
}

calc.php

<h3><?php echo $sum; ?></h3>

最新更新