Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dostęp do funkcji z klasy dziedziczonej
Forum PHP.pl > Forum > Przedszkole
thomson89
Witam!

Załóżmy że mam dwie klasy:
  1. class formuly
  2. {
  3. public function oblicz($a, $b)
  4. {
  5. return $a-$b;
  6. }
  7. }
  8.  
  9. class kwadrat extends formuly
  10. {
  11. var $a = 5;
  12. var $b = 3;
  13. }


Jak w klasie kwadrat, mogę mieć dostęp do funkcji oblicz w klasie formuly? Np.
  1. //funkcja klasy kwadrat
  2. public function obliczKwadrat
  3. {
  4. echo $this -> oblicz($this -> a, $this -> b); //to nie działa, ale coś takiego chcę mieć
  5. }
phpion
Twój kod przecież działa...
  1. class formuly
  2. {
  3. public function oblicz($a, $b)
  4. {
  5. return $a-$b;
  6. }
  7. }
  8.  
  9. class kwadrat extends formuly
  10. {
  11. var $a = 5;
  12. var $b = 3;
  13.  
  14. public function obliczKwadrat()
  15. {
  16. echo $this -> oblicz($this -> a, $this -> b); //to nie działa, ale coś takiego chcę mieć
  17. }
  18. }
  19.  
  20. $k = new kwadrat;
  21. $k->obliczKwadrat();

Domyślam się jednak co chcesz osiągnąć. Poprawna implementacja:
  1. abstract class formuly
  2. {
  3. abstract public function oblicz();
  4. }
  5.  
  6. class kwadrat extends formuly
  7. {
  8. var $a = 5;
  9. var $b = 3;
  10.  
  11. public function oblicz()
  12. {
  13. return $this -> a - $this -> b;
  14. }
  15. }
  16.  
  17. $k = new kwadrat;
  18. echo $k->oblicz();

$a i $b najlepiej przekazać poprzez konstruktor.
skowron-line
- mieszasz php4 i php5
- w klasach nie ma funkcji są metody
- pokaż jaki błąd się pokazuje bo ogólnie dobrze to zrobiłeś.
thomson89
Cytat(skowron-line @ 2.10.2010, 19:49:59 ) *
- mieszasz php4 i php5

to tylko przykład
Cytat(skowron-line @ 2.10.2010, 19:49:59 ) *
- w klasach nie ma funkcji są metody

ok, zapamiętam
Cytat(skowron-line @ 2.10.2010, 19:49:59 ) *
- pokaż jaki błąd się pokazuje bo ogólnie dobrze to zrobiłeś.

wyskakiwał błąd o braku takiej metody

Dzięki za pomoc. Myślałem że źle to robię, a jak się okazało że nie to zacząłem dalej szukać błędu i znalazłem literówkę w scieżce do klasy dziedziczonej.

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.