我想知道为什么" 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树节点,我是对的吗?
答案 0 :(得分:1)
简短的回答,这个问题实际上并不是一个PHP问题,因为PHP只是在实现W3C specification of the DOM document。
在规范中,Node是树的任何部分,包括属性,元素和文本。这不是为什么有DOMNode
的问题,因为树的所有这些部分都共享许多共同的属性,这证明了它们从一个共同的父类继承。
因此,元素和属性在接口设计中共享一个共同的祖先是完全合理的。我认为真正的问题是,当节点通常是树/图的顶点时,为什么它被命名为node
。