![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Jak ten problem rozwiązać? (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
to nie ma prawa zadziałać
a dlaczego nie po prostu: (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Metoda operacja jest podzielona na 5 innych z czego niektóre wywołują się rekurencyjnie i generalnie cała struktura jest cholernie skomplikowana. Natomiast klas dzieci będzie blisko 15, więc chyba zgodzisz się że kompletnym bezsensem i wręcz błędem było by przenoszenie tej implementacji. Oprócz tego istnieje konieczność udostępnienia wartości zwracanej przez metodę innaOperacja(). Inne drogi nie ma. Trzeba w tym kierunku poprzez dziedziczenie i abstrakcję to zrobić.
edit> To znaczy zapewne inna droga jest, inaczej nie byłoby sensu tutaj pytać, ale dziedziczenia raczej użyć trzeba. Ten post edytował orglee 30.01.2009, 14:27:28 |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
czy te metody muszą być statyczne (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) - bo jeżeli tak, to problem jest nie do rozwiązania (przynajmniej ja go nie widzę)...
a jeżeli nie, to wewnątrz operacja() dajesz odwołanie $this->innaOperacja() i wtedy woła ci funkcję odpowiednią dla dla instancji obiektu... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 12 Dołączył: 28.06.2007 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
w pewnej bibliotece użłem tego samego rozwiązania - i działa.
Jednakże nie korzystam z metod statycznych - może w tym tkwi problem ? Ten post edytował plurr 31.01.2009, 16:54:27 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 13.03.2007 Skąd: przeważnie poziome Ostrzeżenie: (0%) ![]() ![]() |
Ten bład jest spowodowany użyciem eslf::. Jeżeli metoda nie musi być statyczna to jak wcześniej wspomniano powinieneś użyć $this zamiast self::. Jeżeli musi być statyczna to skorzystaj z reflectionClass. Tworzysz obiekt reflectionClass od $this pobierasz z niego swoją metodkę i ją wywołujesz. W manualu jest przykład. Powinno zadziałać w twoim przypadku.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 3 Dołączył: 13.10.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Odgrzeję, bo nie bardzo rozumiem jak wykonać metodę dziecka z poziomu rodzica.
Mam plik index.php który sprawdza url i jeśli jest jakaś 'akcja' to ją wykonuje, a następnie wyświetla 'widok'. Wszystko gra, tylko w każdym z kontrolerów muszę powielać funkcję:
i na początku, każdego z widoków wykonywać tą funkcję. Chcąc ograniczyć ilość kodu, postanowiłem stworzyć główny kontroler aplikacji i dziedziczyć jego funkcje w pozostałych kontrolerach. Jednak nie mam pojęcia czy w ogóle jest możliwe dynamiczne wykonywanie metod dzieci z poziomu rodzica, a jeśli tak, to nie do końca wiem jak. Za wszelkie wskazówki, fragmenty kodu, dziękuję. Edit: Ok. Zanim zadam pytanie popróbuję najpierw 'na idiotę'. A więc: nie rozumiem, lecz spróbowałem wywołać metodę powyższym skryptem i... działa (IMG:style_emoticons/default/blink.gif) Ten post edytował iro88 15.04.2011, 14:17:24 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 03:43 |