DOMAttr 扩展 DOMNode 背后的原因是什么?或者,一般来说,拥有 DOMNode class 的目的是什么

What is the reason behind DOMAttr extending DOMNode? Or, what's the purpose of having the DOMNode class in general

我想知道为什么 "DOMNode" class 存在。似乎只对 DOMElement 进行扩展是明智的。这样做的目的是什么?

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

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

准确地说,他们做了 "share" 一些事情,当使用 new DOMAttr ('key','val') 我们得到一个 DOMNode 时节点名 == 'key' 和节点值 == 'val';但是……那又怎样? Key/val对仍然是不是一个DOM树节点,我说得对吗?

简短回答,这个问题并不是真正的 PHP 问题,因为 PHP 只是在实施 W3C specification of the DOM document

在规范中,节点是树的任何部分,包括属性、元素和文本。这不是为什么 DOMNode 的问题,因为树的所有这些部分确实共享许多共同的属性,这证明它们从共同的父级继承。

因此,Element 和 Attribute 在界面设计中具有共同的祖先是完全有道理的。我认为真正的问题是为什么它被命名为 node 而节点通常是 tree/graph 的顶点。