다음은 내가 실행 한 오류를 강조하는 테스트 사례입니다. 노드가 파괴되고 있다고 생각합니다./함수가 반환 된 후에는 가비지 수집/무언가가 있습니다.이 문제를 해결할 수있는 더 좋은 방법이 있습니까?노드가 더 이상 존재하지 않기 때문에 DocumentFragment 내의 요소를 반환하지 않습니다.
function render($doc) {
$fragment = $doc -> createDocumentFragment();
$fragment -> appendXML('<iframe foo="bar"/>');
return $fragment -> childNodes -> item(0);
}
$doc = new \DOMDocument();
$element = render($doc);
// Exception: Couldn't fetch DOMElement. Node no longer exists
echo $element -> tagName; // fails -- because element no longer exists
이것은 단지 테스트 케이스 일 뿐이며 조각에 추가되는 모든 종류의 것들이있을 수 있습니다. "렌더링"이 반환 된 후에 요소를 테스트하고 거기에있는 내용을보고 싶습니다. – ansiart
@ansiart 왜 조각 자체를 반환하지 않습니까? – Musa
예, 그게 지금하고있는 일입니다. 노드 나 아무것도 제거하지 않고 있기 때문에 그것이 여전히 존재하는 요소를 gcing하고있는 것은 매우 이상합니다. – ansiart