我建立一個MVC框架,爲我的模板和意見,我將有一個主頁模板文件和我的意見將被納入到這個模板。
我見過的唯一辦法做到這一點是使用輸出buffereing
ob_start();
include 'userProfile.php';
$content = ob_get_clean();
是否有這樣做的任何其他方式?我認爲輸出緩衝並不是性能上最好的,因爲它使用大量內存
這是一個樣本控制器,$this->view->load('userProfile', $profileData);
是將使用輸出分叉加載的部分,以便它可以包含在主模板中下面到$內容部分
視圖類
public function load($view,$data = null) {
if($data) {
$this->data = $data;
extract($data);
} elseif($this->data != null) {
extract($this->data);
}
ob_start();
require(APP_PATH . "Views/$view.php");
$content = ob_get_clean();
}
控制器
/**
* Example Controller
*/
class User_Controller extends Core_Controller {
// domain.com/user/id-53463463
function profile($userId)
{
// load a Model
$this->loadModel('profile');
//GET data from a Model
$profileData = $this->profile_model->getProfile($userId);
// load view file
$this->view->load('userProfile', $profileData);
}
}
主網站模板
<html>
<head>
</head>
<body>
<?php echo $content; ?>
</body>
</html>
你有沒有考慮使用一些已經存在的如Twig或Smarty? – Treffynnon
您是如何得出結論輸出緩衝使用大量內存的?你真的分析了代碼,發現這確實是這樣嗎? –
如果你想把渲染後的模板放入一個變量中,它總是會消耗至少渲染模板的大小。 – arnaud576875