2010-10-18 28 views
1

您好,我一直在考慮哪種方法是在MVC架構中編寫html的最佳方式。它是否爲普通html,如<div id="id1"> <input type="text" name="tBox" /></div>echo '<div id="id1"> <input type="text" name="tBox" /></div>';。這是一個非常小的例子,但有時我們可以有一個單一的變量或單個回聲聲明有多行代碼。在PHP中使用普通HTML和HTML內部回聲語句或變量之間的區別

我們會有任何性能問題,因爲PHP已經由網絡服務器(Apache的,IIS等)進行解析,而HTML逃脫,並通過瀏覽器直接呈現。那麼我們通過使用普通的HTML來獲得任何解析時間?

+0

不,我們不會有任何性能問題。因爲性能問題來自數據操作,而不是這些小事。 – 2010-10-18 16:28:57

回答

1

定期筆直的HTML是最好的,因爲它可以靜態地提供而不需要PHP處理。不過,如果你有一個MVC架構,那麼你不應該在第一個地方回顯HTML,那個輸出應該由你的視圖層處理。

+0

在視圖圖層中,我們仍然可以使用佔位符變量來打印來自數據存儲(例如:數據庫)的文本。雖然在我的控制器文件中沒有看到回顯語句,但我的視圖層仍然會有echo語句,並且由於這些是PHP變量,所以我必須在視圖上回顯它們。 – macha 2010-10-18 16:46:29

+0

回顯一個變量的內容並回顯靜態HTML是兩個完全分開的東西。顯然,你需要回顯變量。 (或者做一些字符串操作來嵌入它們。)但是,使用視圖圖層/模板系統的關鍵是避免完全按照您所描述的內容進行操作。 – 2010-10-18 16:52:22

0

不要緊,在所有的時候該文件是一個PHP文件(幷包含PHP代碼的地方)。無論內部是什麼,服務器都會執行它,純文本按原樣返回,回顯出的文本會在兩者之間添加(位於回顯位置)。最後生成一個連貫的純文本併發送到客戶端(使用正確的MIME類型),然後使瀏覽器解釋它。

我通常把在較長塊靜態 HTML的<?php .. ?>標籤之外,使其更加清晰,但只要有參與一些邏輯,我贊同一切了,不打破PHP流一路。

但最後,它是完全取決於你。

+0

爲什麼不把PHP流分成兩部分?沒有輸出的數據準備部分和只涉及輸出邏輯的輸出部分? – 2010-10-18 16:47:27

+0

@Col。 Shrapnel:哦,我並不是說要把數據準備或類似的東西放在那裏。我所指的更像是從for循環中輸出重複的塊,其中每行中的多個值都直接來自php數據(例如,想象一些包含大量數據的表格 - 在代碼中查看代碼更容易你有PHP的主要代碼,而不是有多個*控制* PHP代碼作爲HTML之間的內聯PHP代碼)。 – poke 2010-10-18 16:51:31

+0

沒有太多的開發者會同意你的意見。 – 2010-10-18 16:56:20

0

我同意亞歷克斯。你應該保持你的數據和顯示層分離。一個流行的解決方案是使用像Smarty(http://www.smarty.net)這樣的模板系統。我們在工作中使用它。有些人喜歡它,有些人不喜歡;你可以自己決定。

0

靜態HTML具有比回聲或變量「因在html心不是由所述服務器側處理連線嵌入的HTML一個更高的性能。所以一個有用的實現是從服務器端只檢索必要的數據變量,數據庫行,迭代等,因爲內部的一切都將由php服務處理。

+0

這與nowdoc發生了嗎? http://cl.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc – Tae 2010-10-18 22:54:06

+0

當然,該實現的行爲像nowdoc ...我的意思是他們是爲PHP嵌入的目的...沒有PHP解析... – Alejandro 2010-10-19 04:12:33

+0

所以靜態HTML比newdoc更快,而newdoc比echo更快?或者,newdoc和靜態HTML一樣快?提前致謝! – Tae 2010-10-19 16:21:29

相關問題