DOMAttr扩展DOMNode背后的原因是什么?或者,通常使用DOMNode类的目的是什么

时间:2017-03-05 07:09:25

标签: php domdocument

我想知道为什么" DOMNode"类存在于所有。只有DOMElement才能扩展它似乎是明智的。那么它的目的是什么?

例如,为什么DOMAttr类(http://php.net/manual/en/class.domattr.php)基于DOMNode类?这里有什么关系? DOMAttr不能拥有" childNodes"或者...... DOMNode提供的任何东西。

它只是一个键=>价值,不是吗?

确切地说,他们确实"分享"有了新的DOMAttr(' key',' val'),我们会得到一个带有nodeName ==' key'的DOMNode。和nodeValue ==' val&#39 ;;但是......那又怎样?键/值对仍然是一个DOM树节点,我是对的吗?

1 个答案:

答案 0 :(得分:1)

简短的回答,这个问题实际上并不是一个PHP问题,因为PHP只是在实现W3C specification of the DOM document

在规范中,Node是树的任何部分,包括属性,元素和文本。这不是为什么有DOMNode的问题,因为树的所有这些部分都共享许多共同的属性,这证明了它们从一个共同的父类继承。

因此,元素和属性在接口设计中共享一个共同的祖先是完全合理的。我认为真正的问题是,当节点通常是树/图的顶点时,为什么它被命名为node