gpt4 book ai didi

php - 使用输出缓冲作为模板引擎

转载 作者:行者123 更新时间:2023-12-04 04:34:46 26 4
gpt4 key购买 nike

所以我正在编写我的 MVC 并且需要显示我的观点。

目前它非常简单,只是包装在我的主 Controller 内的一个函数中。

ob_start();
require_once('views/' . $fileName . '.php');
$output = ob_get_contents();
ob_end_flush();
return $output;

但是,我不太明白如何在我正在渲染的 View 中设置所有变量,这是最重要的部分(废话)。

关于这样做的任何提示?以及您想要分享的关于基本 MVC 框架的任何代码示例?

我正在编写我能想到的最基本的东西,只有几个 Controller 、模型、 View 、一个自动加载器和一个 index.php 来路由所有请求。我对使用 IIS 重写模块进行重写不感兴趣,所以我只是运行 _GET 来获取查询字符串。

在此先感谢,你们总是一个很大的帮助。

最佳答案

这是一个粗略的想法(代码取自我自​​己的一个框架并对其进行了修改,这是我很久以前构建的,只是为了澄清我的理解),您可以创建一个 View类并将此函数作为方法,但此函数可以用作

$content = render('view_name', array('name' => 'Heera', 'age' => '101'));

功能 render :
function render( $filename, $data = array() )
{
try {

$file = 'views/' . $filename. '.php';
if( !is_readable($file) ){
throw new Exception("View $file not found!", 1);
}

$content = file_get_contents( $file );
ob_start() && extract($data, EXTR_SKIP);
eval('?>'.$content);
$content = ob_get_clean();
ob_flush();
return $content;

} catch (Exception $e) {
return $e->getMessage();
}
}

你可以想到这样的 View
<div><?php echo $name ?></div>
<div><?php echo $age ?></div>

你可以遵循一些现有的框架(我在开发这个框架时做过,对我帮助很大)并编写你自己的框架。

关于php - 使用输出缓冲作为模板引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19934737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com