使用给定参数从控制器加载 PHP 视图文件


Load PHP view file from controller with given parameters

我有一个简单的控制器文件StudentController.php

<?php
$data = array();
$data["firstName"] = $_GET["firstName"];
loadView("StudentView.php", $data);
?>

我有一个更简单的视图文件,叫做学生视图.php

<?php
echo $firstName;
?>

我完全不知道如何实现loadView($view, $data)功能。我希望控制器中$data的变量在视图中可用(控制器中的$data["foo"]在视图中变得$foo

我想实现在 CodeIgniter 中很容易做到的事情,但我不知道它是如何实现的。我试图在源文件中查看控制器.php和加载器.php但它太混乱了,我无法理解。

我不想使用CodeIgniter或任何其他框架,我想在PHP中原生使用。

如果您要构建一个供公众使用的大型网站,出于多种原因,框架通常是一个好主意:

  • 适当的单元测试 - 一般来说,您可以确信您网站的核心正在按预期运行
  • 社区支持 - 有问题,你可以很容易地得到答案;通常这些框架是开源的,通常由PHP社区积极开发
  • 安全 - 框架开发人员是框架开发人员;他们接受过培训,可以编写将安全性作为重中之重的代码。
但是,这个问题与框架与

非框架无关,所以我将用一个非常简单的函数回答你提出的问题:

function loadView($view, $data) {
    extract($data);
    ob_start();
    require_once $view;
    $contents = ob_get_contents();
    ob_end_clean();
    return $contents;
}

您可以选择返回内容或直接打印它们,但该功能应该满足您的需求。我不保证这段代码的安全性,而且我显然没有做任何错误检查。但它应该作为您入门的良好基础。