Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Polimorfizm, Problem z wywoałniem metody swojej klasy
morris4life
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 31.05.2008

Ostrzeżenie: (0%)
-----


Witam,
mam taki kod:

  1. <?php
  2. class MyClass extends DOMNode{
  3. function Hello(){
  4. return '<b>Hello! World.</b>';
  5. }
  6. }
  7.  
  8. $doc = new DOMDocument();
  9. $doc->load('test.xml');
  10. $NodeList = $doc->getElementsByTagName('test');
  11.  
  12. $Node = new MyClass();
  13. echo $Node->Hello();
  14. $Node = $NodeList->item(0);
  15.  
  16. echo $Node->nodeValue;
  17. echo $Node->Hello();
  18. ?>


Wszystko jest ok aż do ostatniej linijki kodu - echo $Node->Hello();
Wynik skryptu:

Hello! World. test1
Fatal error: Call to undefined method DOMElement::Hello() in D:\WebServ\httpd-users\test\index.php on line 17

Czy istnieje jakieś rozwiązanie aby obiekt $Node = new MyClass() po przypisaniu $NodeList->item(0); był nadal obiektem klasy MyClass? (IMG:style_emoticons/default/questionmark.gif) ?

Przez to cała robota mi stanęła...proszę o pomoc (IMG:style_emoticons/default/smile.gif)

Ten post edytował morris4life 30.11.2009, 11:31:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Chyba nie czaisz jak działa dziedzicznie.
class MyClass extends DOMNode powoduje, ze klasa MyClass dziedziczy po klasie DOMNode a nie na odwrót

TO dziala:
  1.  
  2. $Node = new MyClass();
  3. echo $Node->Hello();

Gdyż $node to obiekt klasy MyClass

To nie dziala
  1. $Node = $NodeList->item(0);
  2. echo $Node->Hello();

Gdyż $node to obiekt klasy DOM i nie ma nic wspólnego z MyClass
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 08:37