Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zmiana metody klasy jeśli istnieje
sannin
post
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:

  1. Class Artykuly {
  2. public function dodaj() {
  3. // kod
  4. }
  5.  
  6. public function dodaj() {
  7. // kod
  8. }
  9. }


w pliku modification/users1/Artykuly.Controller.php mamy:

  1. Class Artykuly {
  2. public function dodaj() {
  3. // inny kod
  4. }
  5. }
  6.  


Jak zrobić teraz żeby w klasie podstawowej zmieniła się tylko funkcja dodaj? Czy może ktoś zna jakieś inne lepsze rozwiązanie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


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:

  1. class AddonsArtykuly extends Artykuly {
  2.  
  3. public function dodaj() {
  4.  
  5. // rozszerzasz funkcjonalnosci funkcji dodaj a reszta funckji zostaje taka sama.
  6.  
  7. }
  8.  
  9. }

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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 06:37