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()。