我想使用ob_start()和ob_get_contents()来创建包含动态内容的新文件,以获取整个创建的页面。然后我使用file_put_contents()来创建包含该生成内容的页面。但是,问题是,它解析PHP include()并仅存储HTML内容。有没有什么方法可以保留PHP include(),这样如果我们想要进行小的更新,我就不必更改每个文件代码?
答案 0 :(得分:0)
你有某种页面控制器吗?如果是,则将所有公共元素放在输出缓冲区外的页控制器(或控制器中包含的另一个视图)中。如果不是,请写一个(或找一个开源的,like this)。
例如;
// Page controller
include 'path/to/Page.class.php';
$page->contentfile = getpage(); // get the filename of the page using the url string
$page->header = "..."; // header string
$page->footer = "..."; // footer string
ob_start();
include_once($page->contentfile);
$content = ob_get_contents();
ob_end_clean();
echo $pageobj->display($content);
在page.php中,您可以使用类似$page->title = '';
的内容设置标题等,这些设置将在页面控制器中记住。
请记住,您需要在文件结束前清理输出缓冲区(ob_end_clean();
),否则页面内容可能会输出两次。
上面的代码只是一个例子,但它应该指向正确的方向。