Suchen
Inside Wiki
Nützliche Links




 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > phpforum.de Wiki > phpforum.de Wiki

PHP Wiki Dieses Wiki sammelt Lösungen, zu Problemen, welche immer wieder im Forum auftauchen.

 
 
Artikel-Optionen Ansicht
  #1  

Standard MVC

 
 

OOP Design Pattern - Inhalte

Model View Controller


MVC bezeichnet ein Architekturmuster zur Aufteilung von Softwaresystemen in die drei Einheiten: Datenmodell (engl. Model), Präsentation (engl. View) und Programmsteuerung (engl. Controller). Ziel dieses Entwurfsmusters ist es, Applikationen und deren Komponenten modular aufzubauen und widerverwandbar zu machen. Die meisten heutigen PHP-Frameworks implementieren dieses Entwurfsmuster.

Komponenten


Model


Das Model ist für das Bereitstellen von Daten zuständig. Daten können sein: Dateien im Dateisystem, Datenbankeinträge, usw. Das Model ist von Präsentation und Steuerung unabhängig. Für das Model wird häufig auf ORM-Systeme wie doctrine oder propel zurückgegriffen.

View


Die Präsentation ist für die Darstellung von Daten aus dem Model und die Entgegennahme von Benutzerinteraktionen zuständig. Deshalb kennt sie sowohl ihren Controller als auch das Model, dessen Daten sie präsentiert.

Controller


Der Controller ist für alle Interaktionen zwischen Model und View zuständig. Er nimmt z.B. Benutzereingaben von einem View entgegen und schreibt diese mithilfe des entsprechenden Models in eine Datenbank.

Beispiel


Aufgrund der vielen verschiedenen, teilweise kompexen Umsetzungen der grösseren MVC-Frameworks, beschränken wir uns in diesem Beispiel auf das Wesentliche:

Model.php
PHP Quellcode:
<?php
class Model
{
  private $db;
 
  public function __construct()
  {
    /*
    Beliebige DB Klasse, kann natuerlich auch anders
    implementiert werden (Factory, Registry, ...)
   
    $this->db = new DB();
    */

  }
 
  public function getLatestEntries()
  {
    /*
    Hier Query ausfuehren und Eintraege als Array zurueckgeben, Bsp:
    $query = 'SELECT `title`, `text`
              FROM `entries`
          ORDER BY `date` DESC
          LIMIT 10';
    $this->db->query($query);
    ...
    */

    $data = array(
      array(
        'title' => 'Title One',
        'text' => 'Text One'
      ),
      array(
        'title' => 'Title Two',
        'text' => 'Text Two'
      ),
      array(
        'title' => 'Title Three',
        'text' => 'Title Three'
      )
    );
    return $data;
  }
}
?>


View.php
PHP Quellcode:
<html>
<head>
<title>View</title>
</head>
<body>
<ul>
<?php foreach ($entries as $entry) { ?> 
  <li>
    <h1><?php echo $entry['title'] ?></h1>
    <p><?php echo $entry['text'] ?></p>
  </li>
<?php } ?> 
</ul>
</body>
</html>


Controller.php
PHP Quellcode:
<?php
require_once 'Model.php';

class Controller
{
  private $model;
 
  public function __construct()
  {
    $this->model = new Model();
  }
 
  public function view()
  {
    $entries = $this->model->getLatestEntries();
    require_once 'View.php';
  }
}
?>


index.php
PHP Quellcode:
<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);

require_once 'Controller.php';

$myController = new Controller();
$myController->view();
?>


In anderen Sprachen wie z.B. Java wird MVC oft mit dem Observer-Pattern unterstützt. Mehr dazu im Wiki-Artikel Observer.

MVP Model View Presenter


Ist eine Weiterentwicklung von MVC, die eine striktere Trennung von Model und View verfolgt.

Links


MVC


http://de.wikipedia.org/wiki/Model_View_Controller
http://www.tonymarston.net/php-mysql...ontroller.html
http://cristobal.baray.com/indiana/projects/mvc.html
http://www.enode.com/x/markup/tutorial/mvc.html
http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html
http://www.phpwact.org/pattern/model_view_controller

MVP


http://de.wikipedia.org/wiki/Model_View_Presenter
http://www.martinfowler.com/eaaDev/u...w-presentermvp

« Vorheriges Kapitel   OOP Design Pattern
  Nächstes Kapitel »

Mitwirkende: puritania, combie
Erstellt von puritania, 10.03.2008 am 13:11
Zuletzt bearbeitet von puritania, 30.05.2008 am 13:08
2 Kommentare , 9280 Betrachtungen

Dieser Text steht unter der GNU-Lizenz für freie Dokumentation


 

Lesezeichen

Artikel-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:57 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC