PHP:使用DOM构建(X)HTML输出 - 优点和缺点?

时间:2010-03-03 12:12:01

标签: php html dom xhtml

我刚刚开始使用新网站,我决定使用DOMImplementation来构建完整的网站。

你怎么看待它,它足够快吗?我希望它比基本的打印方法慢一点。我更喜欢DOM,因为它在构建最终输出时允许更大的灵活性,更不用说更多的无错误的XHTML。无论如何,我想至少有一些速度比较。

你能否向我推荐一些(可能是完全明显的)想法来保持PHP代码的清洁(即将HTML保持在最低水平)?

2 个答案:

答案 0 :(得分:3)

你可以拥有一个包含checkBox,textArea等方法的Widget类。您的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 :(得分:2)

速度够快吗?当然,这完全取决于您的网站。对于一个简单的或原型的网站,它会没问题,但我当然不希望在复杂的高流量网站上部署DOM模板解决方案。

您将无法以这种方式生成HTML兼容的XHTML;你必须在产生纯的,非IE兼容的XHTML的saveXML和创建HTML4的saveHTML之间进行选择。像stylescript这样的CDATA元素也可能需要引起注意。

对于内容创建,DOM调用也非常冗长,比如在没有辅助函数或框架的情况下在JavaScript中创建节点。与PHP模板相比,我不确定生成的代码是否可读。

您可以通过使用一致的标记树以更简单的方式使PHP模板“更清晰”,将<?php if (condition) { ?> ... <?php } ?>等PHP结构视为XML开始和结束标记,以及总是以“格式良好”的方式嵌套和缩进它们。见例如。 this question进行讨论。