Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用输出缓冲作为模板引擎_Php_Templates_Output Buffering - Fatal编程技术网

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

Php 使用输出缓冲作为模板引擎,php,templates,output-buffering,Php,Templates,Output Buffering,因此,我正在编写我的MVC,需要显示我的视图 目前它非常简单,只包含在我的主控制器中的一个函数中 ob_start(); require_once('views/' . $fileName . '.php'); $output = ob_get_contents(); ob_end_flush(); return $output; 然而,我不太明白如何在我渲染的视图中设置所有变量,这是最重要的部分(没有狗屎) 有什么建议吗?还有关于基本MVC框架的代码示例吗 我写的是我能想到的最基本的东西,只

因此,我正在编写我的MVC,需要显示我的视图

目前它非常简单,只包含在我的主控制器中的一个函数中

ob_start();
require_once('views/' . $fileName . '.php');
$output = ob_get_contents();
ob_end_flush();
return $output;
然而,我不太明白如何在我渲染的视图中设置所有变量,这是最重要的部分(没有狗屎)

有什么建议吗?还有关于基本MVC框架的代码示例吗

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

提前感谢,你们总是帮了我很大的忙。

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

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

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();
    }
}
你可以想象这样的一种景象

<div><?php echo $name ?></div>
<div><?php echo $age ?></div>


您可以遵循一些现有的框架(我在开发这个框架时就这样做了,并帮了我很多忙)编写自己的框架。

谢谢,我做了一些非常类似的事情,只是我将渲染函数放在了顶级父控制器中,我相信我会重写它以使用视图类,因为这将是区分关注点的更好方法。谢谢你的回答,真的很有帮助:)请看。。。另外,不要将视图与模板混淆(可能会有帮助)。