PHP DOMElements を拡張すると、奇妙な動作が発生しました。
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
ここで何が起こるでしょうか?
私がこのようにすると:
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 を使用せずにこれを行うにはどうすればよいですか? PHP DOMElement を拡張するにはどうすればよいですか?