Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%)
|
Mam cudzą aplikację, oparta jest o MVC.
Do dwóch metod w kontrolerze chciałem dodać małą akcję (statystyki). Aby uniknąć edytowania kodu aplikacji zacząłem pisać klasę rozszerzającą te dwie metody. Klasę by wystarczyło zaicludować w pliku głównym (brak autoloadera) i tyle. W funkcji zawarłem mój kod + ::parent(funkcja). No ale chwila.. To nie działa w tą stronę.. Metoda pokazStroneX wywoływana jest na obiekcie rodzica, a nie dziecka tak więc to co napisałem nie ma prawa działać. Działałoby gdyby metoda była wywoływana na obiekcie klasy rozszerzającej, ale to znów by wymagało ingerencji w kod aplikacji. Tutaj się zastanawiam jak uniknąć ingerowania w kod kontrolera jeżeli w systemie tym, nie ma żadnego systemu pluginów czy API? Są jakieś metody? Jakieś koncepcje? Ten post edytował markonix 18.06.2011, 00:04:24 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
Twój problem wynika z tego, że gdzieś tam w aplikacji w końcu robione jest mniej-więcej coś takiego:
Ty musiałbyś jakoś doprowadzić do tego by tworzony był obiekt typu Dziecko, zamiast Rodzic. Bez tego nic Ci po dziedziczeniu. Być może w jakimś pliku konfiguracyjnym jest możliwość określenia jaki obiekt dla danego typu żądania ma być tworzony? Być może system obsługuje jakiś system zdarzeń i jest możliwość podpięcia własnego kodu? Wtedy wystarczyłoby dodać jakiś warunek sprawdzający czy zdarzenie zostało wywołane w kontekście Rodzic::metodaX() i dodać swój kod. Generalnie jeżeli system nie został przygotowany do możliwości jego nieinwazyjnego rozszerzenia to wiele nie zrobisz. W ostateczności (jeżeli koszt mieszania w oryginalnym kodzie będzie rzeczywiście za wysoki) możesz pokusić się o lekturę tej strony i zawartych w niej sugestii: http://stackoverflow.com/questions/137006/...ethods-or-class - ale takich zabiegów trzeba używać naprawdę z głową. |
|
|
|
markonix Uzupełnianie metod rodzica 18.06.2011, 00:03:43
skowron-line Szczerze mówiąc to nie bardzo zrozumiałem o co cho... 18.06.2011, 07:31:53
pejott Hehe, coś o czym mówisz jest błahostką np. w Symfo... 18.06.2011, 07:56:54
markonix skowron-line, proszę:
[PHP] pobierz, plaintext cl... 18.06.2011, 11:04:18
wookieb Cytat(pejott @ 18.06.2011, 08:56:54 )... 18.06.2011, 11:04:24 
markonix Cytat(Crozin @ 18.06.2011, 15:20:45 )... 18.06.2011, 15:30:44
everth Cytatby uniknąć edytowania kodu aplikacji zacząłem... 18.06.2011, 15:39:05 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 05:44 |