Kan iemand een voorbeeldje geven van een simpel begin met MVC?
Ik heb al vele tutorials bekeken, maar kom er niet helemaal uit hoe te beginnen.
Ik wil een nieuwssysteem maken.


<?php
// newsitem.controller.php
class NewsitemController
{
  private $_model;

  public function __construct($model)
  {
    $this->_model = $model;
  }

  public function create($id)
  {
    $this->_model->create($id);
  }

  public functin getAll()
  {
    $this->_model->getAll();
  }
}

// newsitem.model.php
class NewsitemModel
{
  private $_database;

  public function __construct($database)
  {
    $this->_database = $database;
  }

  public function create($data)
  {
    
  }

  public function getAll()
  {
    // hier komt de database actie..
  }
}

// index.php
$model = new NewsitemModel($database);

$controller = new NewsitemController($model);
$controller->create($_GET["id"]);
?>

// newsitem.html
<h1><?php echo $title; ?></h1>
<p><?php echo $message; ?></p>
Een MVC is een kant en klaar pakket dat je kan gebruiken om websites overzichtelijker te maken. Wat jij wil heeft niets met een MVC te maken.

Toevoeging op 26/05/2014 16:13:38:

Engels talig: http://code.tutsplus.com/tutorials/mvc-for-noobs--net-10488

En dat MVC for noobs bedoel ik niet beledigend, zo heet het artikel :P
Ik zou MVC niet als een kant en klaar pakket beschouwen, maar meer als een modelvorm om je applicatie in te programmeren.
Sorry Donny, maar misschien moet jezelf even dat artikel doorlezen. MVC is niet een kant en klaar pakket, waar slaat dat nu weer op? MVC staat voor Model-View-Controller wat een design pattern, of architectuur is voor een applicatie. Iedereen kan dat ontwikkelen, van een kleine applicatie tot een grote. Ja, veel frameworks gebruiken het, maar dat zegt nul komma niets over wat iemand anders ermee kan doen. Wat de TS wil kan dus prima in een MVC architectuur, als de TS dat wil.
@erwin: misschien verkeerd geformuleerd, maar ben me er goed van bewust wat een MVC is dus hoef em niet nog een keer door te lezen ;) 2x lezen is genoeg :)
Kun je misschien een simpel voorbeeldje geven?
Stel ik wil alle nieuwsitems ophalen, dan roep ik vanuit index.php mijn controller aan met de methode $controller->getAll(). Vervolgens vraagt de methode het model om deze gegevens op te halen uit de database. Stuur ik deze dan terug naar de controller en stuurt de controller deze naar de view?


<?php
// index.php
$model = new NewsitemModel($database);

$controller = new NewsitemController($model);
$controller->getAll();
?>
Uit je comment blijkt dat op geen enkel punt...

Toevoeging op 26/05/2014 16:27:47:

Roy B op 26/05/2014 16:26:10
De methode vraagt het model om deze gegevens op te halen uit de database. Stuur ik deze dan terug naar de controller en stuurt de controller deze naar de view?

Kort gezegd ja. In principe hebben model en view geen weet van elkaar en het model kan dus niet zelf data naar de view sturen.

Hoe ziet zo'n view er dan uit? En hoe stuurt de controller de data naar de view?
Ik weet niet alles probeer alleen te helpen !

De view is de opmaak van de pagina die je opvraagt.
De controller vraagt de gegevens op van de model die het uit de database haalt en krijgt deze terug.
Dan kan de controller deze gegevens aan de view geven zodat de view deze informatie kan gebruiken.

( ps. ik ben geen pro en ik leg uit hoe ik het heb begrepen )
Donny Wie weet op 26/05/2014 16:12:10

Een MVC is een kant en klaar pakket dat je kan gebruiken om websites overzichtelijker te maken.

Donny Wie weet op 26/05/2014 16:22:29

@erwin: misschien verkeerd geformuleerd, maar ben me er goed van bewust wat een MVC is dus hoef em niet nog een keer door te lezen ;) 2x lezen is genoeg :)

Euh Donny... een MVC een kant-en-klaar pakket? Te gebruiken om websites overzichtelijker te maken? Euh... dat klopt niet helemaal zoals Erwin al aangaf.
Roy B op 26/05/2014 16:30:35

Hoe ziet zo'n view er dan uit? En hoe stuurt de controller de data naar de view?

Een view kan in vele vormen komen, ook afhankelijk van hoe complex je site is. In veel gevallen kan je templates gebruiken, bijvoorbeeld smarty. Je kan ook een volkomen eigen view bouwen die helemaal vanaf scratch the html opbouwt (of wat voor output je ook moet genereren).

De controller heeft een referentie naar het object dat de view is en zal de data via een setter in de view plaatsen (of andere methode). Waar je in elk geval altijd voor moet zorgen is dat je een algemene structuur hebt voor de data. Ongeacht wat voor acties er moeten worden ondernomen, ongeacht wat voor output je moet genereren, je wilt altijd dezelfde datastructuur hebben voor de data die uit het model komt en naar de view gaat. Dat kan een array zijn, dat kan ook een container object zijn dat de data vast houdt. Als het maar altijd hetzelfde is. Het hele idee is namelijk dat view en model gescheiden zijn zodat je een ander model erin kan hangen zonder dat de view het merkt. Of, andersom, dat je een andere view erin hangt, die output verstuurt voor een ander device, zonder dat je het model hoeft aan te passen.

Reageren