Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 2 podobne klasy, jak zrobić dla nich klasę rodzica ?
enigma
post
Post #1





Grupa: Zarejestrowani
Postów: 163
Pomógł: 0
Dołączył: 10.09.2006

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


jeszcze mało miałem do czynienia z obiektami i mam problem jak zrobić dziedziczenie
załóżmy że mam 2 klasy: uczeń i nauczyciel
w każdej z tych klas będzie zmienna (tablica), konstruktor no i funkcje no i funkcje (pobierz_dane, dodaj, usuń, zmień)

jak chciałbym zrobić klasę podstawową np. osoba a uczeń i nauczyciel jako dziedziczące to
w w osoba byłyby funkcje a w uczeń i nauczyciel dziedziczyłyby te funkcje no i miały swoje konstruktory, oraz swoje tablice na dane)

no i problem jest z klasą osoba, nie bardzo wiem jak ją utworzyć

część klas bez dziedziczenia
  1. <?php
  2. class Uczeń
  3. {
  4.  $zUczenTab = array
  5.  (
  6.  'idUczen' => null,
  7. 'Klasa_idKlasa' => null,
  8. 'imie' => null,
  9. 'nazwisko' => null,
  10. 'adres' => null,
  11. 'telefon' => null,
  12. 'imie_ojca' => null,
  13. 'imie_matki' => null
  14. );
  15.  
  16. $zUczenIndeksy = 'idUczen, Klasa_idKlasa, imie, nazwisko, adres, telefon, imie_ojca, imie_matki';
  17.  
  18. function __construct($zTablica)
  19. {
  20. if(!is_array($zTablica)) return;
  21.  
  22. foreach($zTablica as $zKlucz => $zWartosc)
  23. $this -> zUczenTab[$zKlucz] = $zWartosc;
  24. }
  25.  
  26. function fPobierzDane($zWartosci, $zKryteria = null)
  27. {
  28.  //
  29. $zSQL = 'SELECT '.$zWartosci.' FROM uczen'.$zWarunek;
  30. //
  31. while($zIle--)
  32. {
  33.  //
  34. $zListaUczniow[] = new Uczeń($zDane);
  35. }
  36.  
  37. return $zListaUczniow;
  38. }
  39. }
  40. ?>


  1. <?php
  2. class Nauczyciel
  3. {
  4.  $zNauczycielTab = array
  5.  (
  6.  'idNauczyciel' => null,
  7. 'imie' => null,
  8. 'nazwisko' => null,
  9. 'telefon' => null,
  10. );
  11.  
  12. $zNauczycielIndeksy = 'idNauczyciel, imie, nazwisko, telefon';
  13.  
  14. function __construct($zTablica)
  15. {
  16. if(!is_array($zTablica)) return;
  17.  
  18. foreach($zTablica as $zKlucz => $zWartosc)
  19. $this -> zNauczycielTab[$zKlucz] = $zWartosc;
  20. }
  21.  
  22. function fPobierzDane($zWartosci, $zKryteria = null)
  23. {
  24.  //
  25. $zSQL = 'SELECT '.$zWartosci.' FROM nauczyciel'.$zWarunek;
  26. //
  27. while($zIle--)
  28. {
  29.  //
  30. $zListaNauczycieli[] = new Nauczyciel($zDane);
  31. }
  32.  
  33. return $zListaNauczycieli;
  34. }
  35. }
  36. ?>


głównie problem jest w tym że:
1. mam wywołania new Nauczyciel i new Uczeń, jak to zrobić w klasie ogólnej
2. w obu klasach są zmienne $zUczenTab = array ... i $zNauczycielTab = array ... (mają różne komórki) a czy da się zrobić tak sprawnie żeby odziedziczone funkcje działały na tych zmiennych (bez przekazywania parametrów do funkcji)

ogólnie rzecz biorąc zastanawiam się jak zrobić klasę rodzica - Osoba na podstawie wyżej podanych fragmentów klas, żeby mogły po niej dziedziczyć

pewnie to wszystko zamotałem, ale może ktoś z Was pomoże mi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
enigma
post
Post #2





Grupa: Zarejestrowani
Postów: 163
Pomógł: 0
Dołączył: 10.09.2006

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


Cytat(splatch @ 8.03.2007, 20:46:29 ) *
Wyzwól swój umysł z okowów strukturalnych błędów.
małymi krokami, ale się staram (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)


Cytat(menic @ 8.03.2007, 20:57:05 ) *
new __CLASS__($zDane); //__CLASS__ pobierze nazwe klasy
no tak, tyle że zwraca mi nazwę klasy rodzica - osoba a mi jest potrzebna nazwa klasy która dziedziczy tę funkcję czyli uczeń lub nauczyciel. Znalazłem get_class() ale, ona używa $this a ja nie mogę używać $this bo funkcja pobierz_dane jest statyczna
Go to the top of the page
+Quote Post
domis86
post
Post #3





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


Cytat(enigma @ 8.03.2007, 22:37:15 ) *
no tak, tyle że zwraca mi nazwę klasy rodzica - osoba a mi jest potrzebna nazwa klasy która dziedziczy tę funkcję czyli uczeń lub nauczyciel. Znalazłem get_class() ale, ona używa $this a ja nie mogę używać $this bo funkcja pobierz_dane jest statyczna


Hmm, statyczna? To to jest jakiś singleton, ktory zwraca jakąś tablice obiektow swojego typu? Nie wyglada mi to najlepiej. Odradzam stsosowania tu statycznych metod.

Moze wytlumacz jasniej co ta funkcja PobierzDane ma robic?
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: 14.10.2025 - 11:22