Klaus: OOP Konflikt

Beitrag lesen

Moinsen.

Folgendes.

Zurzeit arbeite ich an einemBoard/Forum.

Nun. Dieses Board/Forum hat verschiedene Kategorien, in den Kategorien sind Threads und in den Threads wird natürlich mit Posts geantwortet.
Die Kategorien können Unterkategorien haben und diese können auch wieder Unterkategorien haben.

So.

OOP ausgedrückt habe ich das ganze mal in 3 Klassen formuliert:

class.Category
--------------

# zeigt Kategorien und Unterkategorien Kategorie 1 -> Kategorie 2 -> Kategorie 1 -> 3  
showCategoryStructur()  
  
# Holt mir alle Kategorien in ein Array  
allCategories2Array()  
  
# löscht eine Kategorie  
delCategory()  
  
# benennt eine Kategorie um  
renameCategory()  
  
# fügt eine Kategorie hinzu  
addCategory()  
  
# Listet die Kategorien und gibt sie aus  
listCategories()  

class.Article
-------------

# holt alle Threads der Kategorie  
allArticleOfCategory  
  
# holt einen Thread + Antworten  
oneArticle()  
  
# zeigt die X neusten Threads  
newestArticles(x)  
  
# erstellt neuen Thread  
mkNewArticle()  
  
# löscht einen Thread  
delArticle()  
  
# editiert einen Thread  
editArticle()  
  
# Macht Thread (un-)sichtbar  
setArticlesVisibility()  
  
# gibt Thread + Antworten aus  
showArticle()  
  
# erstellt eine Antwort zu einem Thread  
answerArticle()  
  
# zeigt ein Formular zum erstellen/editieren eines Artikels  
showArticleForm()  
  
# generiert eine Vorschau  
previewArticle()  
  
# bewertet einen Thread  
rateArticle()

Beide Klassen sollen nun in der class.Board kombiniert werden.
Im Konstruktor der Board-Klasse werden nun Requests abgefangen und entsprechend behandelt. Wenn ich z.B. auf den "löschen"-Button klicke, steht im Konstruktor
if(isset($_POST['del'])) Article::delArticle();

So in etwa. Würdet ihr das mit dem Abfangen von Requests genauso machen?
Anders wüsste ich nicht wie ich das machen soll.

Aber das ist auch schon ein Problem. Eine Klasse bekommt _zwei_ Klassen.

Ich möchte allerdings das NUR die Boardklasse auf die Category und Article Klassen zugreifen darf. Damit fällt das statisch machen schonmal weg, denn dann, kann ja jeder darauf zugreifen.
Oder gibt es da eine Möglichkeit?

Wie würdet ihr das ganze machen? Oder würdet ihr daraus eine große Boardklasse machen?

Liebe Grüße,

Klaus