Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jak wywołać metodę najwyższego rodzica przy wielokrotnym dziedziczeniu?
czarek1986
post 17.06.2010, 19:24:21
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

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


Witam

Buduje aplikację gdzie mam klasy które dziedzicza po sobie kilkakrotnie np. pojazd->samochod->sedan. Jak mogę wywołać jakąś metodę z najwyższego rodzica tzn z poziomu klasy sedan wywołać metodę w klasie pojazd, która na każdym poziomie dziedziczenia była nadpisywana?
Gdy wpisuje paren::metoda() to wywołuje mi tylko metodę z drugiego poziomu czyli w tym przykładzie z klasy samochod.

Ten post edytował czarek1986 17.06.2010, 19:25:12
Go to the top of the page
+Quote Post
erix
post 17.06.2010, 19:57:43
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie korzystałem z czegoś takiego, ale strzelam, że:
  1. parent::parent::metoda()


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
czarek1986
post 17.06.2010, 20:18:35
Post #3





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

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


Nie tak na pewno nie bo też tak myślałem ale niestety wywala się błąd przy takim zapisie
Go to the top of the page
+Quote Post
darko
post 17.06.2010, 20:35:40
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Ciekawe zagadnienie, możesz spróbować tak:
  1. // ...
  2. call_user_func(array(get_parent_class(get_parent_class($this)), 'NAZWA_METODY_KTORA_CHCESZ_WYWOLAC'));
  3. // ...

[za:] http://stackoverflow.com/questions/1557608...nts-constructor


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
plurr
post 18.06.2010, 06:54:01
Post #5





Grupa: Zarejestrowani
Postów: 175
Pomógł: 12
Dołączył: 28.06.2007
Skąd: Bytom

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


możesz także skorzystać z reflection api: http://www.php.net/manual/en/reflectioncla...parentclass.php


--------------------
Wyobraźnia bez wiedzy może stworzyć rzeczy piękne.
Wiedza bez wyobraźni najwyżej doskonałe.

Albert Einstein
Go to the top of the page
+Quote Post
phpion
post 18.06.2010, 06:56:04
Post #6





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




Moim zdaniem rozwiązanie problemu jest jedno: napisać wspomniane klasy poprawnie. Opisywany problem świadczy jednoznacznie, że coś tu jest nie tak.
Go to the top of the page
+Quote Post
-=Peter=-
post 18.06.2010, 18:54:16
Post #7





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


  1. //w klasie sedan
  2. public function metoda()
  3. {
  4. samochod::metoda();
  5. }


--------------------
Go to the top of the page
+Quote Post
erix
post 18.06.2010, 20:52:30
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No tak, ale to pod warunkiem, że metoda jest STATYCZNA.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
-=Peter=-
post 18.06.2010, 21:35:35
Post #9





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


Mylisz się winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
cojack
post 20.06.2010, 18:21:12
Post #10





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Jeżeli nie ma tej metody w klasie samochód to ją wywołasz normalnie poprzez $this, jeżeli jest to możesz parentem, ale możesz też $thisem, kto Ci broni, poza tym parent:: nie jest rozwiązaniem bolączek. Dla mnie to parent:: został napisany dla konstruktórów i destruktórów. albo po to by rozjaśnić OOP w php gdyż te jest nielogiczne. W ciele klasy matki można wywoływać metody z klasy rodzica, gdyż metody są dopisywane do obiektu a nie do klas. Ja pierdziele, paranoja.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
yevaud
post 20.06.2010, 18:26:10
Post #11





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


@cojack
nie bardzo wiem o co Ci chodzi smile.gif
" ale możesz też $thisem, kto Ci broni" questionmark.gif broni mi przeslonieta metoda

"Dla mnie to parent:: został napisany dla konstruktórów i destruktórów"
przeciez odpowiednik tego sposobu odwolania sie do metody rodzica jest chyba w kazdym jezyku obiektowym i obiektowatym

"W ciele klasy matki można wywoływać metody z klasy rodzica, gdyż metody są dopisywane do obiektu a nie do klas."
przyznam ze nie wiem jak technicznie jest to rozwiazane, wydaje mi sie ze nie masz racji, ale nawet jesli to nie wiem co ma piernik smile.gif
Go to the top of the page
+Quote Post
cojack
post 20.06.2010, 18:46:53
Post #12





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Tak się po prostu użalam nad OOP w php, a jeżeli metoda z dziadka została przysłonięta przez rodzica, to nie widzę sensu by wywoływać metody z dziadka bezpośrednio z dziecka. Wywołaj metodę rodzica a w niej wywołaj metodę rodzica tego rodzica.

No nic spektakularnie trudnego.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
yevaud
post 20.06.2010, 18:57:09
Post #13





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

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


Cytat(cojack @ 20.06.2010, 19:46:53 ) *
Tak się po prostu użalam nad OOP w php

ale nad czym konkretnie, wydaje mi sie ze nie ma juz za bardzo na co narzekac smile.gif

Cytat(cojack @ 20.06.2010, 19:46:53 ) *
a jeżeli metoda z dziadka została przysłonięta przez rodzica, to nie widzę sensu by wywoływać metody z dziadka bezpośrednio z dziecka.

czasami taka potrzeba sie pojawia smile.gif nie zawsze mozemy jechac metodami w gore drzewa jak leci, czasami praktyka psuje nasze misterne plany smile.gif
Go to the top of the page
+Quote Post
cojack
post 27.06.2010, 00:03:44
Post #14





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


@-=Peter=- dał dobrą odpowiedź, temat do zamknięcia ;]


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
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: 13.06.2025 - 07:14