Problem jest taki, ze w obecnej architekturze mamy wszystko w kontrolerach i modelach. I chce te takie if else czy foreach zabrac z kontrolerow czy modeli i dac osobno w klasach. Czyli SQL osobno, jakies wieksze operacje tez osobno. Moze to nie bedzie taka zawsze biznesowa logika, ale jak mam sporo operacji if else, switch foreach etc to nie chce tego pchac w model. Wole trzymac sie SOLID. Porozbijac to na mniejsze klasy. Napisac testy do tych klas. Nie chce tworzyc modelow orm ktore beda mialy tysiace linji kodu. Jezeli mam User ORM to nie chce wzsytkiego trzymac w tej klasie User.
No to jest bardzo dobry pomysł.
Rozumiem że teraz ma spaghetti, czyli pomieszane wszystko ze wszystkim?
Tylko widzisz, musisz być ostrożny. To jest bardzo dobry pomysł, że chcesz je poprzenosić do odpowiednich miejsc, ale niestety nie możesz tego zrobić automatycznie :/ Musisz przeczytać kod, i go zrozumieć całkowicie, i wskazać miejsca: ten kod to jest logika, ten kod to jest persystencja, ten kod to jest HTTP, ten kod to jest cache, ten kod to jest sesja. I to niestety nie jest takie proste jak "ify to logika, query to persystencja". Czasem jeden i ten sam kod w różnych kontekstach może należeć do dwóch domen.
Jak masz ułożony kod w odpowiednie klasy, to on właśnie dlatego jest dobrej jakości, bo ktoś włożył wysiłek w to żeby przeczytać kod i go poprzenosić. Możesz to przyrównać do sprzatania. Jak sprzątasz mieszkanie, to to nie jest takie proste że po prostu wszystko co jest na stole wsadzasz do szafki (Albo do kosza). Tylko bierzesz po kolei każdą rzecz ze stołu, i zastanawiasz się "gdzie ona należy", i przenosisz ją tam. Czasem nawet jeden i ten sam przedmiot możesz włożyć w różne miejsca (typu mała szklanka tu, duża szklanka tam). Podobnie jest z kodem. Każda linijka, każdy if, każda pętla, każda funkcja została dodana do kodu po coś, albo dlatego że tego klient wymaga, albo pod persystencję, albo pod HTTP. Czytając kod musisz zrozumieć po co konkretny kawałek jest, i go wynieść. Często jest tak że jakiś for ma pomieszane odpowiedzialności (czyli np załatwia jednocześnie bazę i logikę biznesową), takie rzeczy bardzo ciężko jest naprawić (np. klient wymaga unikanlnego indetyfikatora dla akcjonariusza, ale baza wymaga unikalnego id, i ktoś mógł napisać pętle która robi te dwie rzeczy na raz - takie coś jest bardzo ciężko posprzątac).
Możesz wkleić kilkanaście linijek takiego kontrolera? To Ci pokaże co mam na myśli.