【问题标题】:PHP: building (X)HTML output with DOM - pros and cons?PHP:使用 DOM 构建 (X)HTML 输出 - 利弊?
【发布时间】:2011-01-23 04:24:57
【问题描述】:

我刚开始创建一个新站点,我决定使用 DOMImplementation 来构建完整的站点。

您对此有何看法,是否足够快?我希望它比基本的打印方法慢很多。我更喜欢 DOM,因为它在构建最终输出时提供了更大的灵活性,更不用说更无错误的 XHTML。无论如何,我想至少有一些速度比较。

您能否向我推荐任何(也许是完全显而易见的)想法来保持 PHP 代码的整洁(即,将 HTML 保持在最低水平)?

【问题讨论】:

  • 有趣的概念,不是我自己认为的。看看其他人对此有什么看法会很有趣。

标签: php html dom xhtml


【解决方案1】:

您可以拥有一个 Widget 类,该类具有 checkBox、textArea 等方法。您的视图/控制器基类定义了一个函数 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 或其他任何内容。

【讨论】:

    【解决方案2】:

    速度够快吗?当然,这完全取决于您的网站。对于一个简单的或原型网站来说,这很好,但我当然不想在复杂、高流量的网站上部署 DOM 模板解决方案。

    您将无法以这种方式生成与 HTML 兼容的 XHTML;你必须在saveXMLsaveHTML 之间进行选择,saveXML 生成纯的、非 IE 兼容的 XHTML,saveHTML 生成 HTML4。 stylescript 等 CDATA 元素也可能需要注意。

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

    您可以通过使用一致的标记树以更简单的方式使 PHP 模板“更干净”,将诸如 <?php if (condition) { ?> ... <?php } ?> 之类的 PHP 结构视为 XML 开始和结束标记,并且始终嵌套和缩进他们始终以“格式良好”的风格。参见例如。 this question 进行一些讨论。

    【讨论】:

    • 分离出 HTML 生成还允许独立于表单/视图控制器来改变生成。可能从 DOM 开始,发现它很好 - 或者发现它太慢并用扁平字符串或其他东西替换它,而不影响表单本身。
    • 好吧,为了我的测试目的,它上面的 formatOutput 设置提供了可读性很强的输出。 (这个功能肯定是有成本的。)
    猜你喜欢
    • 2013-05-21
    • 2010-10-22
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多