2011-04-02 41 views
2

我讀this後,我真的很喜歡這種模板解決方案,但我不確定的一件事。有了這個系統,業務邏輯和表示邏輯不會在兩個不同的PHP文件中?這一切都很好,因爲它將它們分開,但是如果只有表示邏輯在某些頁面上存在,或者如果業務邏輯的數量非常少,該怎麼辦?需要一些模板與PHP/HTML的建議

看起來很奇怪,用戶頁面的默認頁面有時只是表示邏輯,有時只是業務邏輯。似乎有兩個明顯的解決方案:

1)讓所有默認頁面都具有業務邏輯(即使沒有)鏈接到不同頁面上的表示邏輯。這個問題是,那裏有很多「不必要的」頁面。好處是它是一致的。

2)如果頁面沒有業務邏輯,那麼只包括表示邏輯。這樣做的問題在於,在查看文件名時,關於什麼php頁面包含業務和表示邏輯,它是不一致的。

此外,這可能有點偏離主題,但有什麼辦法來模板呢?

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>My Website</title> 
     <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
     <link href="styles.css" rel="stylesheet" type="text/css"/> 
     <link href="favicon.png" rel="shortcut icon" /> 
    </head> 
    <body> 
    </body> 
</html> 

考慮到我有這樣的每一頁上,我想知道是否有到模板這種方式使代碼都可能是在一個文件中,並回顧。

回答

4

您的模板應該包含嚴格的表示邏輯。

這意味着可以包括:

  • 路(以打印清單等)
  • 條件句(如果有的值爲非空例如僅打印的元素)
  • 格式化功能(條空間,輪號等)
  • 少數模板組成輔助函數調用(如「請在這裏包括該其他子模板」)

沒有別的 - 特別是沒有業務邏輯!(如果我忘記了一些重要的東西,請在評論中提及它)

此外,您的模板(「視圖」)不應該用作應用程序使用的目標URL。您應該讓URL指向(可能是許多)「控制器」腳本之一,然後調用必要的業務邏輯並通過包含模板將結果傳遞到模板以進行顯示。如果熟悉模型 - 視圖 - 控制器,您會發現這一點很容易理解;如果你不是,請先熟悉自己。

最後,這裏就是你可以模板,你給了標記的一種方法:

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title><?php echo $title;?></title> 
     <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
<?php foreach ($stylesheets as $stylesheet) : ?> 
     <link href="<?php echo $stylesheet;?>" rel="stylesheet" type="text/css"/> 
<?php endforeach; ?> 
     <link href="favicon.png" rel="shortcut icon" /> 
    </head> 
    <body> 
    </body> 
</html> 
+0

我試圖理解你的意思,當你說「你應該擁有的URL指向(很多可能的一個) 「控制器」腳本,然後調用必要的業務邏輯並將結果傳遞給模板以通過包含模板進行顯示。「你能否詳細說明或者可能提供一個例子? – 2011-04-02 01:24:20

+0

@約翰史密斯:我同意,這不是很清楚。我在說你的應用程序URL應該指向「控制器」,而不是「視圖」。閱讀MVC,你會得到這張照片。 – Jon 2011-04-02 01:27:02

+0

我已經讀了一些關於MVC的內容,並且理解了它的一般想法。但在這種情況下,我仍然感到困惑。你認爲你可以提供一個例子嗎? – 2011-04-02 01:37:20