Projekt bez zaplanowanej architektury:
1. Kontroler odbiera dane z ogromnego formularza, i wywołuje procedurę z setką parametrów. 200 linijek paskudnego kodu.
Założenie poprawionej architektury:
1. tworzę encje dla danych, odzwierciedlające tabele bazy. Model
2. Tworzę bogate klasy serwisów 10 tabel==10 serwisów.
Kod
$productManager->createNewProduct($product; ...)
3. Ma być czysto w kontrolerach
Taka sytuacja z życia powodująca problem:
Frontend: Formularz z 100 pól, podzielonego na 10 zakładek i na każdej zakładce przycisk zapisz. Z każdej zakładki wysyłam porcję danych do zapisu. Dane z formularza powiązane są z 5 tabelami bazy. Każda porcja danych z kolejnych zakładek formularza zawiera częściowe dane wszystkich 5 tabel.
Backend: Tworzę procedury dla każdej akcji zapisz. Każda procedura ma do zapisania 5-20 pól dla 1-5 tabel
Problem: Stworzyłem klasy Model dla tabel bazy. Odbieram w kontrolerze dane z formularza. Wypełniam danymi klasy Model. Przesyłam do klasy Menadżera (w której jest procedura) instancje klas Model. I nagle się okazuje że w kontrolerze muszę poupychać danymi encje (setName, setAge, setXX) tylko po to by w menadżerze te dane odebrać (getName, getAge, getXX) i przekazać procedurze. Ani to ładniejsze ani przydatne. I co jeśli procedura ma wstawiać dane do 5 tabel, gdzie taką procedurę umieścić (Menadżer)?