3
我在课堂上有一堆dom操作函数。 其中一个功能为特定节点分配唯一标识符。PHP节点未通过引用
$resource_info_node->setAttribute('id', 'resource_'.$this->ids);
$details['id'] = 'resource_'.$this->ids;
$details['node'] = $resource_info_node;
$this->resource_nodes['resource_'.$this->ids] = $details;
$this->ids += 1;
后来我想查找并修改这些节点。 我曾尝试:
$current_node = $this->resource_nodes[$id]['node'];
当我的print_r()我觉得这个节点是原始节点的副本。 它具有原始节点的属性,但不是DOM树的一部分。 我得到相同的结果具有:
$this->content->getElementById($id);
我想我基于阵列中的存储节点引用这件事。我认为这是一件很好的事情。即使没有,在使用getElementByID()之后,应该已经返回了dom中的节点。
我认为,在PHP中,所有对象都通过引用传递。包括DOM节点。 关于如何测试实际发生的任何想法。
编辑:
嗯,我用:
$this->xpath->query('//*[@id]');
这回与IDS项目的权数。当我编辑节点时,该节点不在DOM树中。
和
$current_node = &$this->resource_nodes[$id]['node'];
使用引用语法没有影响。
最奇怪的部分是getById()没有返回dom中的节点。除了没有父节点之外,它具有所有正确的属性。
FIX - 不回答:
我只是使用的XPath,而不是我的参考或的getElementById()。