由於我決定重新轉動輪子並編寫一個正在發展的MVC,我雖然有一個模板類會很酷。現在我從來沒有做過任何複雜的模板,除了簡單的包含模板之外。現在我寫了這個基類,下面是我的概念。這是正確的方式/編寫網頁模板的概念嗎?PHP自定義模板類
概念 「的任何模板類將擴展這個類。控制器將修改單個部分或全部,如果控制器將只使用一組動作修改的內容,則該網頁將只改變一個部件和其它部件將保持就像包括頁眉/頁腳一樣,「
另一個問題是,我如何傳遞相同的頁面對象,以便在對象中緩存未更改的部分(因爲http是無狀態協議)?我應該開始會話並將其存儲在會話中嗎?父母應該是單身? 謝謝!
<?php
class TemplateBase{
//variables corresponding to part of web page
private $header;
private $footer;
private $body;
private $menu;
private $left_side;
private $right_side;
private $menu_header;//between menu and header
private $menu_content;//between menu and content
public function __construct(){
//no inits for now
}
//header
public function header_func($action, $value=null){
if($action=="get"){
return $this->header;
}
if($action=="set"){
$this->header = $value;
}
}
//footer
public function footer_func($action, $value=null){
if($action=="get"){
return $this->footer;
}
if($action=="set"){
$this->footer = $value;
}
}
//body
public function contents_func($action, $value=null){
if($action=="get"){
return $this->body;
}
if($action=="set"){
$this->body = $value;
}
}
//left side
public function left_bar_func($action, $value=null){
if($action=="get"){
return $this->left_side;
}
if($action=="set"){
$this->left_side = $value;
}
}
//right side
public function right_bar_func($action, $value=null){
if($action=="get"){
return $this->right_side;
}
if($action=="set"){
$this->right_side = $value;
}
}
//menu
public function menu_func($action, $value=null){
if($action=="get"){
return $this->menu;
}
if($action=="set"){
$this->menu = $value;
}
}
//between menu and content
public function menu_content_func($action, $value=null){
if($action=="get"){
return $this->menu_content;
}
if($action=="set"){
$this->menu_content = $value;
}
}
//between menu and header
public function menu_header_func($action, $value=null){
if($action=="get"){
return $this->menu_header;
}
if($action=="set"){
$this->menu_header = $value;
}
}
}
/*End of file*/
重新開始。檢查現有的模板系統,然後重新開始。 – DampeS8N
評論從哪裏開始(推薦鏈接或其他內容)比僅僅說「重新開始」更有用 –
[谷歌是一個很好的開始。](http://www.google.com/search?q=php +模板+引擎)找到這些模板系統中的任何一個,看看它們是如何實現的。決定你喜歡什麼,而不是幾個。然後重新開始。上面介紹的代碼幾乎包含了代碼可能出錯的所有內容。從糟糕的評論,到重新實現破碎的getter/setter概念,實際上並沒有對模板有用。 – DampeS8N