Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dostęp do funkcji z klasy dziedziczonej
thomson89
post 2.10.2010, 18:41:38
Post #1





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


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. }


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
phpion
post 2.10.2010, 18:48:06
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
skowron-line
post 2.10.2010, 18:49:59
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


- mieszasz php4 i php5
- w klasach nie ma funkcji są metody
- pokaż jaki błąd się pokazuje bo ogólnie dobrze to zrobiłeś.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
thomson89
post 2.10.2010, 19:03:20
Post #4





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


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.



--------------------
Sklep 70%
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: 14.08.2025 - 11:12