2012-11-12 5 views
3

클래스 내에 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(). 명시 적으로

답변

3

사용 참조 :

$current_node = &$this->resource_nodes[$id]['node']; 

그리고이 $current_node

을 수정
관련 문제