我有一個奇怪的行爲擴展PHP DOMElements:擴展一個DOMElement
class JavaScript extends DOMElement {
}
class JavaScriptLibrary extends DOMElement {
}
$dom = new DOMDocument();
$node = new JavaScript('script');
$dom->appendChild($node);
$node = new JavaScriptLibrary('script');
$dom->appendChild($node);
$node = new JavaScript('script');
$dom->appendChild($node);
foreach ($dom->childNodes as $childNode) {
echo get_class($childNode)."\n";
}
預計:
JavaScript
JavaScriptLibrary
JavaScript
結果:
DOMElement
DOMElement
JavaScript
什麼會在這裏happend?
如果我做這種方式:
addElement($dom, new JavaScript('script'));
addElement($dom, new JavaScriptLibrary('script'));
addElement($dom, new JavaScript('script'));
function addElement($dom, $node){
$dom->appendChild($node);
}
其結果將是
DOMElement
DOMElement
DOMElement
我怎麼能做到這一點,而無需使用 - >的createElement喜歡這裏 「How can I extend PHP DOMElement?」。
貌似永遠只有最後一個元素顯示正確的類名 – DevZer0
在它看來,第一個例子,即$節點將保持參考。如果您使用$ node1,$ node2和$ node3作爲它的三個節點。 – user2513437
但我不知道爲什麼這個函數的例子不起作用。將沒有參考。 – user2513437