Ben XPath sorguları kolaylaştırmak için 2 yöntem (selectNodes ve selectSingleNode) uygulamak için iki yerli PHP5 sınıfları (DOMDocument ve DOMNode) genişletmek için çalışıyorum. Ben oldukça straighforward olacağını düşündüm, ama ben bir cepten acemi sorun olduğunu düşünüyorum bir sorun sıkışmış ediyorum.
class nDOMDocument extends DOMDocument {
public function selectNodes($xpath){
$oxpath = new DOMXPath($this);
return $oxpath->query($xpath);
}
public function selectSingleNode($xpath){
return $this->selectNodes($xpath)->item(0);
}
}
Sonra ben bu yüzden doğrudan bir düğüm bir XPath sorgusu gerçekleştirebilirsiniz aynı yöntemleri uygulamak için DOMNode uzatmak yapmaya çalıştım:
class nDOMNode extends DOMNode {
public function selectNodes($xpath){
$oxpath = new DOMXPath($this->ownerDocument,$this);
return $oxpath->query($xpath);
}
public function selectSingleNode($xpath){
return $this->selectNodes($xpath)->item(0);
}
}
Şimdi ben (keyfi bir XMLDocument üzerinde) aşağıdaki kodu execute:
$xmlDoc = new nDOMDocument;
$xmlDoc->loadXML(...some XML...);
$node1 = $xmlDoc->selectSingleNode("//item[@id=2]");
$node2 = $node1->selectSingleNode("firstname");
The third line works and returns a DOMNode object $node1. However, the fourth line doesn't work because the selectSingleNode method belongs to the nDOMNode class, not DOMNode. So my question: is there a way at some point to "transform" the returned DOMNode object into a nDOMNode object? I feel I'm missing some essential point here and I'd greatly appreciate your help.
(Özür dilerim, bu benim bir soru düzeltmesi olan http://stackoverflow.com/questions/2573820/)