如何在不使用框架的情况下预处理PHP MVC视图?

如何在不使用框架的情况下预处理PHP MVC视图?,php,model-view-controller,include,output-buffering,Php,Model View Controller,Include,Output Buffering,有没有什么方法可以在不使用特定MVC框架的情况下预处理PHP视图脚本 基本上,我希望呈现视图并将其作为HTML字符串传递给另一个视图。我试图呈现的视图有一些引用,比如$this->rows,当然,在生成HTML之前,我需要将这些引用的值添加到脚本中 这可能吗?方法取决于您使用的框架 但这可以通过PHP通过使用嵌套的包含来实现 比如说 page.php <?php include(HEADER) ?> <?= $var ?> <?php include(FOOTE

有没有什么方法可以在不使用特定MVC框架的情况下预处理PHP视图脚本

基本上,我希望呈现视图并将其作为HTML字符串传递给另一个视图。我试图呈现的视图有一些引用,比如$this->rows,当然,在生成HTML之前,我需要将这些引用的值添加到脚本中


这可能吗?

方法取决于您使用的框架

但这可以通过PHP通过使用嵌套的包含来实现

比如说

page.php

<?php include(HEADER) ?>

<?= $var ?>

<?php include(FOOTER) ?>

page.php可用的所有变量也可用于页眉和页脚视图。

方法取决于您使用的框架

但这可以通过PHP通过使用嵌套的包含来实现

比如说

page.php

<?php include(HEADER) ?>

<?= $var ?>

<?php include(FOOTER) ?>

page.php可用的所有变量也将可用于页眉和页脚视图。

是的,这是完全可能的。您需要利用以确保不显示初始视图,然后将视图输出存储在变量中

ob_start();
include ('/path/to/file.php');
$contents = ob_get_contents();
ob_end_clean();

是的,这是完全可能的。您需要利用以确保不显示初始视图,然后将视图输出存储在变量中

ob_start();
include ('/path/to/file.php');
$contents = ob_get_contents();
ob_end_clean();


您可能想提供更多信息,例如MVC框架。@justin,他想自己实现MVC模式,这就是为什么他需要一种技术来捕获输出缓冲区……是的,我故意忽略了MVC框架,它恰好是Joomla。我很想看看我是否能以一种框架无关的方式来做这件事——我认为这很酷,因为这样我就可以从其他框架中回收视图。你可能想提供更多信息,比如MVC框架。@justin,他想自己实现MVC模式,这就是为什么他需要一种技术来捕获输出缓冲区…是的,我故意忽略了MVC框架,它恰好是Joomla。我很想看看我是否可以用一种与框架无关的方式来做这件事——我认为这会很酷,因为这样我就可以从其他框架中回收视图。但是,在呈现包含的文件之前,我如何向其中添加数据呢?包含的视图文件中有一些引用,如$this->行,我想我可以在包含视图之前将这些变量添加到上下文中,但出于某种原因,ob_end_clean并没有自动丢弃我的缓冲区内容。只要我按视图包含文件,它就会被发送到输出,无论是在缓冲区内还是在缓冲区外。好吧,更正,如果内容不是包含,ob_end_clean会自动丢弃缓冲区内容,但无论包含输出如何。有什么办法可以防止吗?找到问题了!缓冲区无法阻止将所有内容输出到输出的致命错误!一切都很完美——美丽——这对我来说是一个巨大的发现。非常感谢!但是,在呈现包含的文件之前,如何将数据添加到该文件中?包含的视图文件中有一些引用,如$this->行,我想我可以在包含视图之前将这些变量添加到上下文中,但出于某种原因,ob_end_clean并没有自动丢弃我的缓冲区内容。只要我按视图包含文件,它就会被发送到输出,无论是在缓冲区内还是在缓冲区外。好吧,更正,如果内容不是包含,ob_end_clean会自动丢弃缓冲区内容,但无论包含输出如何。有什么办法可以防止吗?找到问题了!缓冲区无法阻止将所有内容输出到输出的致命错误!一切都很完美——美丽——这对我来说是一个巨大的发现。非常感谢!我用的是Joomla。问题是我需要预处理page.php并将其转换为字符串。在我这么做之前,我需要改变$var的值。因此,如果该文件是一个对象,我需要如下内容:page.php->var=foo-然后将该页面渲染为一个具有指定值的字符串。问题是我需要预处理page.php并将其转换为字符串。在我这么做之前,我需要改变$var的值。因此,如果该文件是一个对象,我需要如下内容:page.php->var=foo-然后将该页面渲染为一个具有指定值的字符串。