我想创建一个生成html页面的cms,并创建存储每个页面的文件。
理想情况下我需要这样的东西:
<?php
$file1 = get_produced_html_from('mainPage.php');
/* write the file to a directory*/
$file2 = get_produced_html_from('ProductsPage.php');
/* write the file to a directory*/
?>
是否有任何错过的功能而不是require,include,require_once,include_onse等?
澄清一下:我不需要.php文件中的php代码。我只需要html内容,这意味着应首先执行php文件。
您认为解决方案类似于使用http://php.net/manual/en/function.file-get-contents.php阅读http://domain.com/templates/mainPage.php作为html流吗?
非常感谢你。
答案 0 :(得分:4)
您需要捕获缓冲区的输出。
这是我为某人编写的一段代码,用于演示一个非常简单的视图渲染器类。
public function render($file) {
$file = $this->viewPath = APP_ROOT . 'View' . DS . $file . '.php';
if (is_file($file)) {
ob_start();
extract($this->_vars);
include($file);
$content = ob_get_contents();
ob_end_clean();
} else {
throw new RuntimeException(sprintf('Cant find view file %s!', $file));
}
return $content;
}
打开输出缓冲区(ob_start())执行php文件并设置变量然后获取缓冲区(ob_get_contents())然后清除缓冲区以进行下一个操作({ {3}})。您还可以使用ob_end_clean()直接清理并发送缓冲区。我不会这样做,而是对应用程序进行正确的关闭过程,并确保一切都已完成,并且在将页面发送到客户端之前没有错误地完成。
我想我很快就会在Github上提供整个代码。我会更新答案。
答案 1 :(得分:1)
您可以使用cURL从网址获取整个渲染输出。
你可以像这样使用它:
// Initiate the curl session
$ch = curl_init();
// Set the URL
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/mypage.php');
// Allow the headers
curl_setopt($ch, CURLOPT_HEADER, true);
// Return the output instead of displaying it directly
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute the curl session
$output = curl_exec($ch);
// Close the curl session
curl_close($ch);