MVC Design Pattern (CodeIgniter)

MVC Design Pattern
MVC Design Pattern

Das MVC Design Pattern Prinzip von CodeIgniter ist eine super Sache wenn man verstanden hat wie es funktioniert. Die Abkürzung MVC kommt von Model View Controller. Die MVC Design Pattern haben folgenden Gedankengang: Es gibt Controller, diese sollen alles Logische abhandeln und die Kommunikation zwischen Model und View ermöglichen. Es gibt mehre Model, diese beschäftigten sich nur mit dem abholen von Daten und dem speichern/aktualisieren von Daten. Und es gibt Views, diese sind nur zur Anzeige von dem Endergebnis da.

Kurzeinführung CodeIgniter

Die Installation von Codeigniter ist relativ simpel, einfach von http://ellislab.com/codeigniter CodeIgniter herunterladen und auf dem Webserver im entsprechenden Verzeichnis entpacken.

Bei CodeIgniter sind alle selbstprogrammierten und sonstige Funktionen/Klassen im application Ordner. Dort gibt es diverse Ordner einer der wichtigsten nach der Installation ist meist der config Ordner, dort werden diverse Einstellungen gemacht, einer der wichtigsten Dateien dort ist die database.php, da dort die Zugangsdaten zur Datenbank angeben werden. Ich werde hier nicht weiter auf die Konfiguration eingehen, da ich hier gerne näher die MVC Design Pattern erklären möchte.

Zurück zum application Ordner, dort sind für die MVC Design Pattern die wichtigsten Ordner models, views, controllers. Bei Codeigniter beginnt jeder Request in einem Controller (vorher durchläuft es natürlich das Framework und es werden diverse Sicherheitschecks gemacht). Bei der Standardkonfiguration ist dabei der Aufruf folgender: /index.php/klasse/methode. Es beim HTTP Aufruf schon definiert welche Klasse (Controller) und welche Methode dadrin aufgerufen werden soll.

Controller

Damit sind wir beim Controller. Im Controller werden alle logischen Dinge abgehandelt. Hier mal ein typischer Controller:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Lan extends CI_Controller {

	function games()
	{
		$this->load->model('lan_games'); // Model laden
		$data['games'] = $this->lan_games->get_games(); // Methode aus dem Model ausführen

		$this->load->view('lan', $data); // View laden
	}
}

Dort haben wir die Klasse Lan als Controller mit der Methode games. Dadurch ist sie erreichbar unter: /index.php/lan/games Dieser Kontroller lädt nun also das Model lan_games.
Nach dem Laden kann man mit $this->model_name->model_methode(); drauf zu greifen. Aus der Datenbank laden wir uns entsprechend alle Spiele.

Als nächstes kommt ein $this->load->view(‘lan’, $data); dort laden wir den view für unsere Seite. Das war es schon aus Kontroller sicht. Damit haben wir den Controller bei den MVC Design Pattern abgeschlossen. Kommen wir nun zum Model.

Model

Im Model definieren wir unsere eigentliche Datenbank abfrage, allerdings wird hier nicht direkt SQL getippt, sondern es werden Methoden aus der Datenbank Library benutzt, so ist man Datenbank unabhängiger und man kann z.B. ohne Problem von MySQL auf MSSQL wechseln.

<?php 
class Lan_games extends CI_Model {

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }

    function get_games() {
		$this->db->select('*');
		$this->db->from('lan_games');
		$this->db->order_by('name');
		$query = $this->db->get();
    	return $query;
    }
}

Die Konstruktor Methode entspricht den Standard von CodeIgniter, deshalb gehe ich dort nicht weiter drauf ein. Als nächtes haben wir eine Methode Namens get_games() diese rufen wir von außen aus unserem Controller auf. Sie macht ein Select * auf die lan_games Tabelle und sortiert das ganze nach Namen. Das Ergebnis geben wir zurück.

View

Der nächste Schritt in unserem MVC Design Pattern ist dann der View. Der View ist relativ einfach und sorgt nur dafür das der Benutzer etwas angezeigt bekommt.

<h1>LAN Games</h1>
<ul>
<?foreach($games->result() AS $game):?>
	<li><?=anchor('lan/game/'.$game->site_url, $game->name)?><br /></li>
<?endforeach;?>
</ul>

Da wir in unserem Controller dem View über die Variable $data[‘games’] das Result von dem Model mit gegeben haben können wir einfach mit einer foreach Schleife auf $games->results() die einzelnen Rows durch gehen und ausgeben. Man beachten das wir ein Array mit gegeben haben und der Array Index in diesem Fall games die Variable im View ist in der die Daten enthalten sind.

Das war eine kurze Einführung in das MVC Design Pattern Prinzip. Ich hoffe es hat euch gefallen!


Comments

One response to “MVC Design Pattern (CodeIgniter)”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.