클래스 내에 dom 조작 함수가 있습니다. 이러한 함수 중 하나는 특정 노드에 고유 ID를 할당합니다.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 노드 포함. 실제로 진행되고있는 작업을 테스트하는 방법에 대한 아이디어.
는 편집 :
그럼 내가 사용 : ID를 가진 항목의 오른쪽 숫자를 반환
$this->xpath->query('//*[@id]');
. 노드는 편집 할 때 DOM 트리에 있지 않습니다.
및
$current_node = &$this->resource_nodes[$id]['node'];
어떤 영향을했던 참조 구문을 사용합니다.
가장 이상한 부분은 get elementById()가 dom에서 노드를 반환하지 않는다는 것입니다. parentNode를 제외하고 모든 적절한 속성을 가지고 있습니다.
FIX - 대답하지 :
난 그냥 사용 XPath는 대신에 내 참조 또는에서 getElementById(). 명시 적으로