Zacznij pisać w najprostszy sposób używając jednego kontrolera. Kiedy uzbiera Ci się trochę metod będziesz mieć łatwiejszą drogę do pogrupowania ich i wyselekcjonowania konkretnych klas. Na początku może być Ci trudno tworzyć klasy i opracowywać projekt. Wiele rzeczy wyjdzie w trakcie pisania kodu, moja rada to pisanie metod w kontrolerze a potem na drodze refaktoryzacji grupowanie ich i wyciąganie do klas.
Przykładowy początkowy kontroler mógłby wyglądać tak:
class IndexController
{
public function userSetComment() {}
public function userSetReplyCommentToConcreteUser {}
public function getNewArticle {}
public function setNewArticle {}
public function addArticlesCategory {}
public function deleteArticlesCategory {}
public function setEmailToNewsletter {}
// in your admin panel ...
public function getNewsletterEmails {}
public function getMostPopularArticles {}
}
Podstawa to dobrze zaprojektowana baza danych. Rozpisanie metod w taki sposób pozwoli Ci na dopracowanie bazy danych. W następnym drugim kroku możesz wyeksportować na drodze refaktoryzacji metody z tego kontrolera i utworzyć klasy jak np:
class ArticleCategory {}
class Article {}
class ArticleComment {}
class ArticlesCollection {}
class User {}
Każdą z takich klas należy dobrze przemyśleć czy faktycznie powinna istnieć czy nie lepiej np. zrobić pole $comments = array() w klasie Article {} zamiast klasy ArticleComment{} ?
Takich przemyśleń będzie cała masa - wszystko zależy od Twoich ambicji i tego co chcesz dalej zrobić z tym projektem ...
Dalsze porządkowanie to użycie SPL PHP ...itd.