Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wywołanie potomka w momencie wywołania rodzica
StreetFighter
post 2.12.2019, 20:59:08
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 2
Dołączył: 17.04.2017
Skąd: 127.0.0.1

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


Witajcie, mam kod:

  1. class Rodzic{
  2.  
  3. public function iloscDzieci(){
  4.  
  5. echo 'nie mam dzieci';
  6. }
  7.  
  8. }
  9.  
  10.  
  11.  
  12. class Dziecko extends Rodzic{
  13.  
  14. public function iloscDzieci(){
  15.  
  16. echo 'mam jedno dziecko';
  17. }
  18.  
  19. }
  20.  
  21.  
  22. $test = new Rodzic();
  23. $test->iloscDzieci();



Czy jest jakaś możliwość wywołania dziecka wywołując klase rodzica, żeby echo wyświetliło mi ?:

mam jedno dziecko


edit: chodzi mi jakby o nadpisanie lub przesłonięcie metody

Albo inczej, jak z klasy rodzica dostać się do klasy dziecko?

Potrzebuje uzyskać coś takiego że Jak wywołam jakoś metode z klasy rodzica to uruchomie wszystkie metody z klas dziedziczących


  1.  
  2. class Rodzic{
  3.  
  4. public function lata(){
  5.  
  6. echo 40;
  7. }
  8.  
  9. }
  10.  
  11.  
  12. class SynTomek extends Rodzic{
  13.  
  14. public function lata(){
  15. echo 20;
  16. }
  17. }
  18.  
  19. class SynJuzek extends Rodzic{
  20.  
  21. public function lata(){
  22.  
  23. echo 15;
  24. }
  25. }
  26.  
  27.  
  28.  
  29.  


po wywołaniu Rodzic::lata() chce uzyskać wyjscie 402015

zakładając że rodzic nie wie jakie ma dzieci, więc jakby automatycznie to jakoś odczytać

chodzi mi dokładnie o to co chciał uzyskać markonix

http://forum.php.pl/index.php?showtopic=178479

czyli nie da rady w ten sposób

Ten post edytował StreetFighter 1.12.2019, 20:46:28
Go to the top of the page
+Quote Post
Pyton_000
post 30.12.2019, 12:47:47
Post #2





Grupa: Zarejestrowani
Postów: 7 864
Pomógł: 1381
Dołączył: 26.10.2005

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


Nie odwołasz się do klasy dziecka z klasy rodzica bo te o sobie nic nie wiedzą. W drugą stronę się da.

Oczywiście dałoby się ale musiałbyś mieć autoloader np. z PSR4 potem znaleźć wszystkie klasy które extendują rodzica, stworzyć ich instancję i wywołać je.
Go to the top of the page
+Quote Post
Tomplus
post 30.12.2019, 13:41:48
Post #3





Grupa: Zarejestrowani
Postów: 1 591
Pomógł: 194
Dołączył: 20.03.2005
Skąd: Będzin

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


Co do słownictwa, to słowo `wiek` brzmiałby lepiej niż `lata`. W końcu po wywowałniu Rodzic::lata() oczekiwałbym wyniku: TAK, lata lub NIE, to nielot biggrin.gif

W programowaniu obiektowym nie jest celem aby tworzyć nadrzędną klasę której dodajemy dzieci. Spójrz na to z poziomu architekta lub anatoma.
np.
  1. class Ssak { }
  2.  
  3. class Czlowiek extends Ssak {}
  4. class Krowa extends Ssak {}
  5.  
  6. $rodzic = new Czlowiek;
  7. $rodzic -> imie = 'Stefan';
  8. $rodzic -> wiek = 33;
  9.  
  10. $syn = new Czlowiek;
  11. $syn -> imie = 'Janusz';
  12. $syn -> wiek = 6;
  13.  
  14. $zwierzak = new Krowa;
  15. $zwierzak -> imie = 'Mućka';


Coś w tym stylu. Inni mogą dać lepsze przykłady.
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: 28.02.2020 - 15:59