我有一個名爲Page的類,它爲當前頁面加載一個PHP文件,其中包含所有的HTML(模板文件)。在我的模板文件中,我想要使用其他對象的實例,這些實例在Page類(例如User,PDO或其他類)之外初始化。我的問題是,我如何以最聰明的方式做到這一點。使用另一個PHP類的許多不同對象內部實例的最佳方式是什麼?
在我的網頁類我有裝載我的模板文件(包含所有的代碼爲我的GUI的方法稱爲get_page()。
public function get_page() {
// Load theme template
...
$template_file = ABSPATH_THEME . 'tpl.' . $result['template_file'] . '.php';
if(file_exists($template_file)) {
$page = require_once($template_file);
return $page;
}
}
正如你看到的模板文件是我的Page類裏面裝,因此,這不是要訪問我的網頁類的外部初始化類的實例
我能拿出不同的解決方案:
1)我通過不同類別的所有實例上我的課頁面,構建我的網頁時。我認爲這是正確的方式,但是如果我在設計中需要5,10或20個不同的物體,這可能非常複雜。
2)找到一種方法將模板文件包含在Page類之外,但是從get_page()函數觸發 - 不知道如何做到這一點,以及它是否是一個好的解決方案?
你能告訴我什麼是最好的,如果有更好的方法來做到這一點?
聽起來不錯的選擇是使用像Smarty這樣的模板引擎 –
我曾考慮過使用SMARTY,但我決定不使用,因爲我想完全控制我的主題支持。我用這種方式對我來說效果很好。但是,如果我可以編寫我的模板,就好像它不在類中一樣。 – mschadegg