Klaus: OOP Konflikt

Beitrag lesen

Also die einzelnen Klassen zu unterteilen in M, V und C ist mit denk ich verständlich geworden.

Wie ich aber das ganze jetzt Modul-/Klassenübergreifend machen kann ist mir nicht klar.

Eine einzelne Klasse würde ich jetzt so aufbauen.

Als Beispiel nehme ich jetzt mal die Boardklasse.

Ordnerstruktur:

Board
Board -> boardController.php
Board -> Model -> boardModel.php
Board -> View -> boardView.php

Demnach würden die Dateien etwa so aufgebaut sein:

model.php:

  
class boardModel{  
  
  public function __construct(){}  
  
  // Holt alle Einträge eines bestimmten Datums  
  public function getArticlesFromDate($date){  
    $resultArray=// Query  
    return $resultArray;  
  }  
}  

boardController.php

  
class boardController{  
  
  const A_FROM_DATE = 1;  
  
  public function __construct(array $params){  
  
    $model = new boardModel();  
  
    if($params['whatToDo']==A_FROM_DATE){  
      $this->viewBoard($model->getArticlesFromDate($params['condition']), "articles");  
    }  
  }  
  
  // Verwaltet die Anzeige  
  public function viewBoard($articles='',$what=''){  
    $view = new boardView($articles);  
  
    $view->showBoardHeader();  
  
    $numberOfArticles=count($articles);  
    foreach($articles as $s){  
      $view -> toDo($what);  
    }  
  
    $view->showBoardFooter();  
  }  
}  

boardView.php

  
class boardView{  
  
  private $toShow;  
  
  public function __construct(array $toShow=array()){  
   $this->toShow = $toShow;  
  }  
  
  public function showBoardHeader(){}  
  public function showBoardFooter(){}  
  
  public function toDo($what){  
    switch($what){  
      case 'articles':  
        $showMe="<h2>".$this->toShow['title']."</h2>;  
        break;  
      case 'categories':  
        $showMe="<ul>";  
        foreach($this->toShow as $show){  
          $showMe.="<li>".$show['category']."</li>;  
        $showMe="</ul>"  
        break;  
    }  
    echo $showMe;  
  }  
}  

So in etwa? Und das mit jeder Klasse?
oder sollte das alles eher so aussehen:

Ordnerstruktur:

index.php
FrontController.php
View.php

Models->NewsletterModel.php
Models->ContactModel.php
Models->BoardModel.php

Views->NewsletterView.php
Views->ContactView.php
Views->BoardView.php

Controllers->NewsletterController.php
Controllers->ContactController.php
Controllers->BoardController.php

Bei einem Request für den Newsletter würde folgendes passieren:

Der in der index.php inkludierte FrontController würde den NewsletterController aufrufen welcher die Anfrage an das NewsletterModel weiterleitet, und die Daten danach an NewsletterView übergibt. Die Ausgabe würde der Front Controller an View.php weitergeben welche ebenfalls in der index.php inkludiert ist.

?!

Ich hab mir das ZendFramework angeguck tund auch runtergeladen aber leider ist mir aus der Ordnerstruktur kein M, V, C nachvollziehbar. Sagen wir so - zu kompliziert und es heißt halt nicht Model, View, Controller.

lg,

Klaus