Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wywolywanie operacji klasy nadrzednej z wnetrza klasy podrzednej
hhg
post 5.01.2007, 15:45:38
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


chce wywolac operacja() z A poprzez B (ignorujac operacja() z B ), tylko nie wiem jak sie stosuje to parent::
tak nie dziala:

  1. <?php
  2. class A
  3. {
  4. var $atrybut = 'domyslna wartosc';
  5. function operacja()
  6. {
  7. echo 'Cos<br />';
  8. echo "Wartosc $atrybut wynosi $this->atrybut<br />";
  9. }
  10. }
  11.  
  12.  
  13. class B extends A
  14. {
  15. var $atrybut = 'inna wartosc';
  16. function operacja()
  17. {
  18. echo 'cos innego <br />';
  19. echo "wartosc $atrybut wynosi $this->atrybut<br />";
  20. }
  21. }
  22.  
  23. $a = new B();
  24. parent::operacja();
  25. ?>


Ten post edytował hhg 5.01.2007, 15:48:01
Go to the top of the page
+Quote Post
Cysiaczek
post 5.01.2007, 15:52:45
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Parent sosujesz z wnętrza klasy potomnej

  1. <?php
  2. class B extends A
  3. {
  4. var $atrybut = 'inna wartosc';
  5. function operacja()
  6. {
  7. echo 'cos innego <br />';
  8. echo "wartosc $atrybut wynosi $this->atrybut<br />";
  9. }
  10.  
  11. function operacjaZA()
  12. {
  13. parent::operacja();
  14.  
  15. }
  16. }
  17. ?>


Zresztą i tak mieszasz, bo $atrybut została nadpisana w klasie B : )

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
hhg
post 5.01.2007, 16:10:05
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


dlaczego w Twoim kodzie klasy B :

  1. <?php
  2. class B extends A
  3. {
  4. var $atrybut = 'inna wartosc';
  5. function operacja()
  6. {
  7. echo 'cos innego <br />';
  8. echo "wartosc $atrybut wynosi $this->atrybut<br />";
  9. }
  10.  
  11. function operacjaZA()
  12. {
  13. parent::operacja();
  14.  
  15. }
  16. }
  17. ?>


dołączasz

  1. <?php
  2. var $atrybut = 'inna wartosc';
  3. function operacja()
  4. {
  5. echo 'cos innego <br />';
  6. echo "wartosc $atrybut wynosi $this->atrybut<br />";
  7. }
  8. ?>



nie wystarczy samo

  1. <?php
  2. class B extends A
  3. {
  4.  
  5. function operacjaZA()
  6. {
  7. parent::operacja();
  8.  
  9. }
  10. }
  11. ?>

? ktore wywola operacja z klasy A?
Go to the top of the page
+Quote Post
Cysiaczek
post 5.01.2007, 16:13:30
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Poczytaj trochę o przesłanianiu metod klasy bazowej - jest w manualu. Wogóle poczytaj troche więcej, bo pytasz o samiusieńkie podstawy.
Zrobiłem to dlatego, że teraz masz wybór, do której metody chcesz się odnieść - czy do metody z klasy potomnej, czy do metody z klasy bazowej.

Pozdrawiam


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
hhg
post 5.01.2007, 16:19:02
Post #5





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

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


ok dzieki za pomoc! pozdrawiam
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 12.08.2025 - 04:47