Może na początek podkreślę - każdy programista ma inną wizję MVC - to tylko zwykły szablon. To tak jak szablon strony (załózmy z webmark-a, którą dobrze wspominam, niestety - już jej nie ma ;() każdy sobie to lekko przerobi, zmieni, itp. To tak gwoli ścisłości, gdyż to co niżej przedstawię, jednemu się będzie podobało, a drugiemu nie.
Przede wszystkim Kontroller ma zarządzać widokiem i modelem i nic nie wiedzieć o danych. To więc:
<?
class news {
public function pokaz()
{
$oView = new Widok; // wybieramy widok
// teraz przypisujemy kilka zmiennych, załóżmy tytuł i content strony.
$oView -> title = 'To jest tytul strony';
$oView -> aNews = $oView -> model -> PobierzNewsy();
// zwracasz widok
return $oView -> index();
}
}
?>
Teraz pewnie wiele osób się zapyta, dlaczego to Widok przechowuje w swojej zmiennej instancję klasy Model ? Ano dlatego, żeby w widoku także można było pobierać dane z modelu, gdyż to jest założeniem MVC. Przy okazji jest to wiele wygodniejsze, gdyż jak jest np. lewe menu, które posiada np. blok "losowa fotka", to potem trzeba w każdej metodzie controllera dopisywac te bzdetne linijki kodu, by pobierane były dane z modelu. A po co , skoro można to zrobić jednym zapytaniem w Widoku.
Widok ma za zadanie gromadzić dane z szablonow i je zwracać controllerowi, tak więc (pomijam tutaj klasy abstrakcyjne, zeby pokazac oco chodzi - wiadomo - lepiej dziedziczyc sobie niektore metody z klasy abstrakcjii)
<?php
class Widok {
public function index()
{
$sPage = $this->display('header');
$sPage .= $this->display('costam');
return $sPage;
}
public function display($sWhat)
{
include ($sWhat);
return $sContent;
}
public function __construct()
{
$this -> model = new Model;
}
}
?>
Model ma pobierać dane z różnych źródeł i je zwracać, czyli po prostu:
<?
Class Model {
public function PobierzNewsy () {
$oDb = new Database('plik.ini'); // pobiera konfiguracje z pliku ini , np
$oDb -> execute ('select * from news');
return $oDb -> fetchData();
}
}
?>
Do tego dochodzi jeszcze FrontController który pobiera sobie z routera kontroller i akcję i odpala odpowiedni kontroller i jego metodę. W moim przypadku (czyt. moj fw) jest coś takiego, że FrontController wybiera kontroller, i później jest coś takiego:
<?
function execute()
{
$sController = $this -> oRouter -> getController();
$sAction = $this -> oRouter -> getAction();
$oController = new $sController;
echo $oController -> {$sAction} (); }
?>
i już wszystko jasne

Mam nadzieję, że ten post rozwiąże wszelkie wątpliwości co i jak połączyć.
Pozdrawiam,
Matix.