![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 27.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam pytanie związane ze zwiększeniem optymalizacji mojego kodu. Mam zrobione klasy abstrakcyjne i większość zawsze jest dziedziczona w moich akcjach, jednak od czasu do czasu zdarza się, że mam jakieś akcje w kontrolerach, które muszą się różnić od podstawowej i wtedy przeciążam całą akcję, a w 90% i tak powielam kod by zmienić tylko 2 linie. Dlatego chciałem zapytać co jest dobre na zastosowanie tego aby ciągle nie powielać kodu ?
Chodzi mi np. o takie coś:
Jak widać wszystkie te linie mogą być spokojnie raz zaimplementowane, a nie powtarzane tylko dlatego, że coś się różni w tym bloku. Pozdrawiam Ten post edytował mate 1.02.2013, 12:07:12 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
lub wykorzystaj wbudowany _forward() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 60 Dołączył: 25.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
rozwiązanie tego jest banalnie proste, poszukaj info o wzorcu projektowym template method, po polsku methoda szablonowa
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 25 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Osobiście użyłbym: Zend_EventManager (dodany chyba w wersji 1.12)
Może robic dokładnie to o czym piszesz. W Zendzie 2 przykładowy kod wyglądałby tak:
Teraz jeśli chcesz dla jakiegoś kontrolera zmienić zachowanie możesz zrobic tak:
Możesz to zrobic w pluginie, bootstrapie gdzie chcesz. Moim zdaniem to jest najlepszy sposób bo możesz nie zmieniając kodu podpinac się w dowolnym miejscu metody. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 27.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ciekawe rozwiązanie, dzięki za odopowiedź, na pewno o tym poczytam. Dzięki.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 11 Dołączył: 25.07.2012 Ostrzeżenie: (0%) ![]() ![]() |
popieram ciekawie wyglądająca i nieznana przeze mnie opcja (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 14:17 |