DOMElement наследуется от DOMNode и у DOMNode есть свойство DOMDocument, но в DOMElement его нет.
Вопрос в следующем ...
Как мне получить DOMDocument имея лишь DOMElement?
Спустя 2 часа, 33 секунды (12.05.2010 - 22:19) Raito-kun написал(а):
если я правильно понял, вы хотите при помощи объекта наследуемого класса извлечь свойство родительского? не могу сказать точно, но кажется это невозможно. родительский класс может обращаться к свойствам дочернего, но наоборот насколько я знаю-нельзя.
Спустя 8 минут, 37 секунд (12.05.2010 - 22:27) Jaska написал(а):
Добавить защищенный метод DOMNode который будет возвращать свойство DOMDocument. Все должно успешно вызываться из DOMElement'а
Спустя 6 минут, 9 секунд (12.05.2010 - 22:33) Jaska написал(а):
Цитата (Raito-kun @ 12.05.2010 - 19:19) |
если я правильно понял, вы хотите при помощи объекта наследуемого класса извлечь свойство родительского? не могу сказать точно, но кажется это невозможно. родительский класс может обращаться к свойствам дочернего, но наоборот насколько я знаю-нельзя. |
class B extends A {
function B(параметры_для_A, другие_параметры)
{ $this->A(параметры_для_A);
инициализируем другие поля B
}
function TestB() { ... }
function Test() { ... }
}
Цитата |
Ключевое слово extends говорит о том, что создаваемый класс является лишь "расширением" класса A, и не более того. То есть B содержит те же самые свойства и методы, что и A, но, помимо них и еще некоторые дополнительные, "свои". Теперь "часть A" находится прямо внутри класса B и может быть легко доступна, наравне с методами и свойствами самого класса B. Например, для объекта $obj класса B допустимы выражения $obj->TestA() и $obj->TestB(). |
это с php.su
Поскольку дочерний класс всего-лишь расширение родительского обращаться к свойствам родительского класса - не проблема. А вот для обратной связи (я не уверен) мне кажется нам потребуется чтобы родительский класс был абстрактным.
Спустя 21 час, 31 минута, 57 секунд (13.05.2010 - 20:05) rodzewich написал(а):
Цитата |
Добавить защищенный метод DOMNode который будет возвращать свойство DOMDocument. Все должно успешно вызываться из DOMElement'а |
А вот и не вызывается, вот конкретный пример
$dom=new DOMDocument('1.0','UTF-8');
$domelement=$dom->createElement('p');
$dom->appendChild($domelement);
el($domelement);
function el($domelement){
$dom=$domelement->DOMDocument; // <- Это свойство не работает, хотя DOMElement унаследован от DOMNode
$strong=$dom->createElement('strong','... text ...');
$domelement->appendChild($strong);
}
----------
Для остальных - я не полный дебил и с ООП php знаком
Итак, объясняю для кто незнаком DOM екстеншеном
Класс DOMNode имеет свойство DOMDocument ...
http://ru2.php.net/manual/en/class.domnode.php
А класс DOMElement получается так:
DOMElement extends DOMNode{}
http://ru2.php.net/manual/en/class.domelement.php
Так вот, я имея DOMElement хочу получить свойство DOMDocument!!!
Спустя 5 часов, 46 минут (14.05.2010 - 01:51) dr_Lev написал(а):
В приведенных тобою мануалах я не нашел никакого свойства DOMDocument у класса DOMNode, есть свойство ownerDocument тип - класса DOMDocument
$dom=$domelement->ownerDocument ;
Спустя 7 часов, 45 минут, 3 секунды (14.05.2010 - 09:36) rodzewich написал(а):
Цитата (dr_Lev @ 13.05.2010 - 22:51) |
В приведенных тобою мануалах я не нашел никакого свойства DOMDocument у класса DOMNode, есть свойство ownerDocument тип - класса DOMDocument$dom=$domelement->ownerDocument ; |
Действительно так и есть ...
Сори, извиняюсь что всех озадачил
Неправильно прочитал документацию )))
_____________