2010-03-03 46 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