2010-03-03 50 views
3

我剛從一個新網站開始,我決定使用DOMImplementation來構建完整的網站。PHP:建設(X)與DOM的HTML輸出 - 優點和缺點?

您對此的看法是否足夠快?我預計它會比基本的打印方法慢很多。我更喜歡DOM,因爲它可以在構建最終輸出時提供更大的靈活性,更不用說沒有錯誤的XHTML。無論如何,我想至少有一些速度比較。

您能否推薦我保留PHP代碼清潔的任何(也許完全明顯的)想法(即保持HTML最低水平)?

+0

有趣的概念,而不是我認爲我自己。看看別人對此有何評論會很有意思。 – 2010-03-03 12:14:23

回答

2

速度夠快嗎?當然,這完全取決於您的網站。對於一個微不足道的或原型網站來說,它會很好,但我當然不希望在複雜的高流量網站上部署DOM模板解決方案。

您將無法以這種方式生成兼容HTML的XHTML;您必須在生成純非IE兼容XHTML的saveXML和創建HTML4的saveHTML之間進行選擇。像stylescript這樣的CDATA元素也可能需要一些注意。

對於內容創建而言,DOM調用也非常冗長,比如在JavaScript中創建節點而沒有幫助函數或框架的好處。與PHP模板相比,我不確定生成的代碼是否可讀。

您可以通過使用一致的標記樹以更簡單的方式使PHP模板變得更簡潔,將<?php if (condition) { ?> ... <?php } ?>等PHP結構視爲XML開始和結束標記,並始終對它們進行嵌套和縮進'格式良好'的風格。見例如。 this question進行一些討論。

+0

分離HTML代也允許改變獨立於窗體/視圖控制器的代。一個人可能會從DOM開始,並發現它很好 - 或者發現它太慢,並用扁平字符串或其他方式替換它,而不會影響表單本身。 – 2010-03-03 13:21:04

+0

那麼,我的測試目的與formatOutput設置就可以提供相當可讀的輸出。 (這個功能肯定是有成本的。) – Scorchio 2010-03-05 10:41:35

3

你可以有一個Widget類,它有checkBox,textArea等方法。你的View/Controller基類定義了一個函數addContent($ aString)。當你建立一個形式,你說像

$builder = new Widget(); 
$this->addContent($builder->textArea("Description", $description, 5, 100); 
$this->addContent($builder->radioGroup("Platform", array("FreeBSD", "Linux", "Windows"), $platform, 100); 

的東西在那裏

public function textArea($name, $value, $numLines, $width) {...} 
public function radioGroup($title, $nameArray, $selectedValue, $width0 {...} 
// etc. 

你的表格,然後不知道什麼HTML然後:他們嚴格按照UI組件進行操作。您的Widget類的子類可能會生成HTML或其他內容。

+1

這讓我想起Google Web Toolkit。 – vsr 2010-03-03 12:29:36

+0

我承認我在考慮Seaside:http://www.seaside.st/ – 2010-03-03 13:17:35