Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wywolywanie operacji klasy nadrzednej z wnetrza klasy podrzednej
Forum PHP.pl > Forum > PHP
hhg
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. ?>
Cysiaczek
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.
hhg
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?
Cysiaczek
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
hhg
ok dzieki za pomoc! pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.