![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 13 Dołączył: 31.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
napisałem cms który ma tam jakieś moduły i są one ofertą podstawową. Użytkownicy zakładając konta pracują na tych samych plikach, ale osobnych bazach. Jednak są użytkownicy którzy potrzebują jakieś dodatkowe funkcje. Zrobiłem tak po to, żeby uniknąć po tysiąc krotnego poprawiana tych samych plików w razie wystąpienia błędu. Ale wracając do tematu, jest użytkownik który chcę dodatkową funkcję... całość jest napisana obiektowo. W podstawowym pakiecie powiedzmy jest dodawanie artykułów i jest to klasa Artykuly metoda dodaj. Pewien użytkownik chcę mieć możliwość dodawania razem z treścią zdjęć. Wymyśliłem coś takiego w katalogu modifications są podkatalogi user1, user2 z zmodyfikowanymi plikami. Teraz tak w pliku podstawowym Artykuly.Controller.php mamy:
w pliku modification/users1/Artykuly.Controller.php mamy:
Jak zrobić teraz żeby w klasie podstawowej zmieniła się tylko funkcja dodaj? Czy może ktoś zna jakieś inne lepsze rozwiązanie? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Po prostu sprawdzaj czy user ma plik: modification/users1/Artykuly.Controller.php jesli go ma zmienasz kontroler i tyle zrob to na podstawie interfejsow i api bd to samo.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 13 Dołączył: 31.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Akurat to wiem tylko nie chcę znów przepisywać całego pliku, a ewentualnie metodę. Możesz powiedzieć mi coś więcej na temat interfejsów i api?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Nie musisz przepisywac calego pliku skoro: modification/users1/Artykuly.Controller.php to jest jakis dodatek to mozesz zrobic tak kazdy dodatek jak bedziesz pisal ma dziedziczy z klasy podstawowej czyli w tym przypadku:
Klasa podstawowa: Artykuly Klasa rozszerzajaca: Artykuly ale jest inna sciezka pliku bo modification/users1/Artykuly.Controller.php. Czyli teraz jak masz kontroler modification/users1/Artykuly.Controller.php includuj do niego glowna klase kontrolera Artykulow po czym robisz:
Teraz przed utworzeniem obiektu artykuly i wywolania metody sprawdzasz czy istnieje plik: modification/users1/Artykuly.Controller.php jesli tak includujesz go i inicjuesz ta sama klase z sufix'em Addons. Rozumiesz?To najprostszy sposob jaki przychodzi mi do glowy. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
W modyfikacje/uzytkownik_1/abc.php:
A autoloader niech zadba o to by w przypadku, gdy istnieje wczytywany był plik z modyfikacje/* EDIT: uprzedzony (IMG:style_emoticons/default/smile.gif) Ten post edytował Crozin 20.09.2009, 15:36:27 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 308 Pomógł: 13 Dołączył: 31.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Myślałem nad czymś takim, ale czy w takim wypadku metoda zostanie zamieniona? Nie wystąpi coś w rodzaju przeciążenia metody i sam w końcu nie będę wiedział która się wywoła?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Nie poprostu tym sposobem mozesz rozszerzac funkcjonalnosc danej metody lub dodawac nowe.
A po co ty masz wiedziec ktora sie wywola to ma wiedziec twoj skrypt poprostu jesli ktos chce dodatkowa funkcjonalnosc instaluje sobie ten addons a twoj kod wykonuje odpowiedni kontroler i tyle |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 07:39 |