Почему один и тот же метод возвращает объекты разных классов?

  • Автор темы goodron
  • Дата начала

goodron

Guest
Почему один и тот же метод возвращает объекты разных классов?

Вот метод объекта, у которого есть свойство:
PHP:
var $xmlComponent
, в котором записан объект класса
PHP:
DOMElement
PHP:
function insertData() {
	print(get_class($this->xmlComponent)."<br>");

	$data = $this->xmlComponent->getElementsByTagName("DATA");
	print(get_class($data)."<br>");
			
	foreach ($this->xmlComponent->childNodes as $componentProperty) {
		if ($componentProperty->nodeType == 1 && $componentProperty->nodeName == "DATA") {
					$data = $componentProperty;
		}
	}

	print(get_class($data));
}
Результат:
DOMElement
DOMNodeList
DOMElement

Вопрос: почему getElementsByTagName возвращает объект класса DOMNodeList, хотя сам $this->xmlComponent получен с помощью этого же метода getElementsByTagName? Правда он вызывался у объекта класса DOMDocument.
Оба класса DOMDocument и DOMElement являются наследниками DomNode. Может они по разному переопредляют родительский метод?
Или возвращаемый результат зависит от структуры xml-документа?
 

chameleon

Новичок
Re: Почему один и тот же метод возвращает объекты разных классов?

Автор оригинала: goodron
хотя сам $this->xmlComponent получен с помощью этого же метода getElementsByTagName?
код покажите
 

goodron

Guest
PHP:
$components = $this->xmlTree->getXMLComponents();

function getXMLComponents() {
	return $this->domDoc->getElementsByTagName("COMPONENT");
}
-~{}~ 02.06.05 12:32:

PHP:
$this->domDoc
- объект класса DOMDocument
 

chameleon

Новичок
Меня интересует именно операция присваивания $this->xmlComponent = bla-bla, а то что Вы мне привели с этим только отдаленно связано. А getXMLComponents() возвращает DOMNodeList.
 

goodron

Guest
Извините за беспокойство, я во всем сам разобрался...
 
Сверху