Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dwie klasy, podobne funkcje, jak uprościć?
Forum PHP.pl > Forum > Przedszkole
Warmix
Potrzebuję pomocy merytorycznej.

Mam bardzo podobne dwie tabele w bazie danych - różnią się one same nazwą oraz niektóre pola w tych tabelach różnią się nazwą.
Generalnie obie z nich będą pełnić podobne funkcje i zadania. Skoro mają korzystać i przetwarzać dane w taki sam sposób, w jaki sposób poprawnie w myśli programistycznej stworzyć taki kod?

Planuję na początek stworzyć dwie klasy encji - w nich tylko pola prywatne odpowiadające kolumnom z tabel oraz gettery i settety.
I teraz jak podejść do sprawy ze stworzeniem modelu obsługi tych danych, pobierania ich z bazy itd.? Większość funkcji będzie identyczna, parę pewnie będzie unikalnych. Nie chciałbym duplikować tych samych funkcji, zatem pewnie dziedziczenie, ale właśnie w jaki sposób, by było najbardziej zgodne z ideą poprawnego programowania? Skorzystać z klas abstrakcyjnych? Interfejsów? Jak?

A i jeszcze jedno. Skoro jedna funkcja miałaby obsłużyć dwie tabele, które no różnią się nazwą, ich kolumny różnią się nazwą (choć ilość jest identyczna i są sobie odpowiadające) to w jaki sposób prawidłowo programuje się taką funkcję? Co przekazuje się w parametrach, co z ciałem, skoro jeśli np. pobierałbym po nazwie to są różne? Jak to wygląda? To nurtuje mnie najbardziej.
Tomplus
Nie bardzo rozumiem o co Ci chodzi, ale jeżeli masz potwórzenia, to starasz się je usunąć umieszczając w to miejsce funkcję, albo instancję klasy.

To przykład, masz dwie strony, gdzie jest pętla która wykonuje się tak samo, tylko różni się ilością wyświetleń:
strona1:
  1. for($i=1;$i<=10;$i++) {
  2. //...
  3. }


strona2:
  1. for($i=1;$i<=20;$i++) {
  2. //...
  3. }


to zamiast tego tworzysz funkcję:

  1. function petla($value) {
  2. for($i=1;$i<=$value;$i++) {
  3. //...
  4. }
  5. }


A potem:
- na stronie1
petla(10);

- na stronie2
petla(20);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.