Co do bezsensu 1 kontroler = 1 podstrona mogę się częściowo zgodzić, np gdy piszemy panel, tam możemy ładnie pogrupować sobie metody w klasach (kontrolerach), gdy piszemy dużą stronę to jeśli w innym wypadku pogrupujemy w kontrolerach różne podstrony musimy korzystać z routera. Poza tym to trochę nam zaciemni kod, przynajmniej tak mi się wydaje.
OK, wytłumaczę jak ja to widzę dokładniej:
Mamy taką niewielką stronę:
- newsy pogrupowane w kategorie,
- formularz kontaktowy,
- strona o nas,
Chcemy uzyskać taką strukturę linków:
http://example.org/news/12/ruszyla-nowa-stronahttp://example.org/newsy/1http://example.org/kategoria/1/nowoscihttp://example.org/kontakt ...
1. Piszemy kontroler dla kategorii newsów w panelu z metodami: index (lista), dodaj, edytuj, usun.
dostaniemy np taki adres:
http://example.org/kategorie_admin/edytuj/1232. Podobny kontroler dla zarządzania newsami.
3. Na głównej wyświetlamy newsy - kontroler np Newsy
4. Rozwinięcie newsa - kontroler News (można też dać oddzielną metodę w kontrolerze Newsy, ale wtedy albo nam się wydłuży url, albo będziemy musieli utworzyć regułę dla routera)
5. Kontroler dla formularza kontaktowego
6. Kontroler dla pozostałych stron statycznych i tu podobnie, albo dłuższy url, albo router (można też rozbić to na oddzielne kontrolery)
Wszystko moim zdaniem zależy od tego ile przewidujemy kontrolerów, jeśli mała stronka to można spokojnie pisać na wielu kontrolerach, ale w pewnym momencie, wraz ze wzrostem liczby kontrolerów bardziej sensownym rozwiązaniem będzie tak jak pisze
normanos, grupowanie.
Parsowana jest jedynie metoda którą wywołujesz, więc nic nie stoi na przeszkodzie by kilka metod umieścić w jednym kontrolerze.
Jeśli chodzi o foreach-owanie danych z bazy w kontrolerze to jest to dyskusyjna sprawa, robię tak by widok był mniej skomplikowany, ale tylko jeśli mam szablon który powtarzam wielokrotnie.