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

时间:2013-01-26 20:10:57

标签: php codeigniter templates

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

<?php

$data = array();
$data["firstName"] = $_GET["firstName"];

loadView("StudentView.php", $data);

?>

我有一个更简单的视图文件,名为 StudentView.php

<?php

echo $firstName;

?>

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

我希望实现CodeIgniter中很容易实现的功能,但我不知道它是如何实现的。我试着在源文件中查看Controller.php和Loader.php,但这对我来说太麻烦了。

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

1 个答案:

答案 0 :(得分:1)

如果您打算建立一个大众网站供公众使用,框架通常是一个好主意,原因有多种:

  • 经过适当的单元测试 - 一般来说,您可以确信您网站的核心是按照预期的方式运作
  • 社区支持 - 有疑问,您可以轻松获得答案;通常这些框架是开源的,通常由PHP社区积极开发
  • 安全 - 框架开发人员是框架开发人员;并且他们已经接受过培训,可以将安全性作为首要任务编写代码

然而,这个问题与框架没有任何关系,所以我会用一个非常简单的函数回答你问的问题:

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

您可以选择退回内容或直接打印,但该功能应该可以满足您的需要。我不保证这段代码的安全性,我显然没有做错误检查。但它应该成为帮助你开始的良好基础。