Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Dwie klasy, podobne funkcje, jak uprościć?
Warmix
post 1.09.2017, 15:54:02
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Warmix 1.09.2017, 16:00:34
Go to the top of the page
+Quote Post
Tomplus
post 1.09.2017, 22:55:47
Post #2





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:17