2013-05-27 107 views
0

我有一些類爲網站做事情,如獲取新聞,創建記錄唱片,演出列表等。有功能爲listGigs(),listHeadlines()等,這些打印出相關的信息到屏幕上。PHP:使用函數來打印內容與返回內容作爲變量,然後打印,而不是

是否有一個缺點,有一個函數返回所有的HTML作爲變量,然後打印這個變量,而不是直接通過函數調用打印出來?

如果我可以爲通用變量中的每個頁面設置所有內容,例如$ maincontent然後我可以在html模板中調用這些。這似乎挺直的,我只是想知道這是否是好的做法。這裏就是我反正談論的總體規劃:在模板文件

在PHP文件

$maincontent = $news->getHeadlines; 
include_once 'template.php'; 

<body> 
    <div>Some stuff</div> 
    <div clas="main"><?php echo $maincontent; ?></div> 
</body> 

回答

0

我看不出有任何問題與建立直接到輸出小部件。如果你想被給予更多一點的靈活性,雖然你可以實現這樣的

function displayTemplate($template, $data, $__captureOutput = false){ 
    if ($__captureOutput) ob_start(); 
    extract ($data); 
    include($template); 
    if ($__captureOutput) return ob_get_clean(); 
} 

,併爲您的上述使用情況下的東西,你只想做任何

$maincontent = $news->getHeadlines; 
displayTemplate('template.php',array("maincontent"=>$maincontent)); 

$maincontent = $news->getHeadlines; 
$data = displayTemplate('template.php',array("maincontent"=>$maincontent), true); 
0

我會懷疑從函數返回HTML是否明智。

具有函數輸出HTML的缺點是您現在已將應用程序(域)邏輯與表示邏輯耦合。假設你想以不同的方式呈現相同的數據,比如JSON對象或原始數據寫入文件。您必須爲每個案例編寫額外的函數,或編寫一個函數來解析HTML,從中提取數據並將其轉換爲您想要的格式。

如果函數完成了工作,但只返回一個PHP數據結構,那麼您可以使用該輸出作爲實現演示邏輯的另一個函數的輸入。

直接從函數打印HTML是非常不靈活的,你甚至沒有選擇將它重新分解成另一種格式。

良好的軟件通常與彼此分離的各種問題鬆散耦合。數據的計算和數據的呈現是獨立的關注點。

+0

感謝您的回覆,夥計們。 – Shane

+0

糟糕,沒有完成,... 由php數據結構你的意思是一個數組?在這種情況下,類文件從數據庫創建一個數組,以便已經存在於對象中(如果我正確理解這些概念...),然後該函數將其轉換爲html。我沒有看到如何創建json或其他任何沒有其他功能的東西來做到這一點。 – Shane