CodeIgniter MVC (Model View Controller) Framework mit Beispiel

Was ist MVC?

MVC-Standards für Model-View-Control. Es handelt sich um ein Architekturmuster, das die Anwendung in drei Hauptkomponenten aufteilt.

1. Das Modell befasst sich mit Geschäftslogik und Datenbankinteraktionen

2. Der Controller koordiniert die Aktivitäten zwischen dem Modell und der Ansicht

3. View ist für die Datenpräsentation verantwortlich

Im Folgenden sind einige der Vorteile des MVC-Architekturmusters aufgeführt

  • Lose Kopplung – die Komponenten existieren und funktionieren unabhängig voneinander.
  • Flexibilität – Änderungen an einzelnen Komponenten sind problemlos möglich
  • Erhöhte Produktivität – mehrere Personen können gleichzeitig am Projekt arbeiten. Die Front-End-Entwickler können an Ansichten und Präsentationen arbeiten, während sich Backend-Entwickler auf Modelle konzentrieren können. Da das System lose gekoppelt ist, funktioniert es am Ende des Tages

Modell

Das Modell ist für die Interaktion mit Datenquellen verantwortlich. Dabei handelt es sich in der Regel um eine Datenbank, es kann sich aber auch um einen Dienst handeln, der die angeforderten Daten bereitstellt. Es ist auch üblich, dass die Geschäftslogik in den Modellen und nicht im Controller enthalten ist. Diese Praxis wird üblicherweise als „Fat Model Skinny Controller“ bezeichnet.

Das Modell schreibt normalerweise Daten in die Datenbank und bietet einen Mechanismus zum Bearbeiten und Aktualisieren sowie zum Löschen von Daten. In einer modernen Webanwendung verwenden Modelle Entwurfsmuster für den Datenzugriff wie Active Record, um die Interaktion mit der Datenbank zu vereinfachen.

CodeIgniter verwendet beispielsweise eine integrierte Active Record-Bibliothek zur Unterstützung der Modelle, während andere Frameworks wie Laravel den Eloquent Object Relational Mapper (ORM) verwenden, der den Datenzugriff unterstützt.

Controller

Der Controller wartet auf eingehende Ressourcenanforderungen der Benutzer. Es fungiert als Vermittler zwischen dem Modell und der Ansicht und implementiert manchmal auch einige Geschäftsregeln. Nehmen wir an, der Controller erhält eine Anfrage zur Registrierung eines Benutzers in der Datenbank.

Der Controller kann eine Datenvalidierung der übermittelten Daten durchführen, um sicherzustellen, dass alle erforderlichen Parameter übermittelt wurden. Wenn etwas fehlt, wird der Benutzer auf die Registrierungsseite umgeleitet und die entsprechende Fehlermeldung angezeigt. Der Controller kann das Modell auch auffordern, weitere Validierungen durchzuführen, indem er prüft, ob die übermittelte E-Mail-Adresse bereits vorhanden ist. Wenn alle Validierungsregeln erfüllt sind, übermittelt der Controller die Daten zur Verarbeitung an das Modell und wartet auf die Antwort.

Sobald das Modell die Informationen verarbeitet und eine positive Antwort zurückgegeben hat, lädt der Controller die entsprechende Ansicht und übergibt die vom Modell zurückgegebenen Daten als Parameter.

Anzeigen

Die Ansicht befasst sich mit Daten, die dem Endbenutzer präsentiert werden. In Webanwendungen enthalten Ansichten häufig HTML, CSS und optional JavaSkript. Ansichten enthalten nur minimalen Programmiercode. Der in Ansichten enthaltene Code wird normalerweise verwendet, um Datensammlungen zu durchlaufen, die als Parameter vom Modell oder der Hilfsfunktion empfangen wurden, um Daten zu bereinigen oder Links zum Bearbeiten der Datensätze zu erstellen. Die meisten modernen Webanwendungen verwenden normalerweise Template-Engines, die ihre eigene Syntax definieren, die eher Pseudocode ähnelt und von Designern leicht verstanden werden kann. Bei der Arbeit mit CodeIgniter ist es üblich, kurze PHP-Tags und Kontrollstrukturen zu verwenden. Um etwas in CodeIgniter anzuzeigen, kann man den folgenden Code verwenden

<?=$title?>

Im Gegensatz zu

<?php
echo $title;
?>

Kontrollstrukturen werden normalerweise wie folgt geschrieben

<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?><p>
</li>
<?php endforeach; ?>

Wie Sie dem obigen Beispiel entnehmen können, verwendet die Ansicht eine Kombination aus PHP und HTML, anstatt alles in reinen PHP-Code einzuschließen.

Wie funktionieren MVC-Frameworks?

Das folgende Bild zeigt die Funktionsweise des MVC-Frameworks

MVC Frameworks funktionieren

Ein Controller empfängt die Anforderung vom Benutzer, interagiert bei Bedarf mit dem Datenbankmodell und gibt das Ergebnis dann in Form von HTML-Code an den Browser zurück, den der Browser in ein für Menschen lesbares Format interpretiert und dem Benutzer anzeigt.

CodeIgniter-Controller

Lassen Sie uns nun aufschlüsseln, was gerade passiert ist, als wir die obige URL in den Webbrowser geladen haben.

Öffnen Sie die Datei „Welcome.php Controller“ unter „Anwendung/Controller“.

Sie sollten den folgenden Code sehen können

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}

HIER,

  • Defined('BASEPATH') OR Exit('Kein direkter Skriptzugriff erlaubt'); verhindert den direkten Zugriff auf den Controller, wenn die Anfrage nicht über index.php kam. Dies dient Sicherheitszwecken.
  • Klasse Welcome erweitert CI_Controller {…} definiert die Welcome-Controller-Klasse und erweitert die übergeordnete Klasse CI_Controller
  • Die öffentliche Funktion index(){…} definiert die Indexmethode, die auf die URL reagiert http://localhost:3000
    • $this->load->view('welcome_message'); lädt die Ansicht „Willkommensnachricht“, die sich im Verzeichnis „application/views“ befindet

Wir werden nun die Indexmethode wie folgt aktualisieren

public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}

HIER,

  • $this->load->model('customers_model'); lädt das Kundenmodell.
  • $data['customer'] = $this->customers_model->get_customer(3); ruft die get_customer-Methode von customer_model auf und übergibt den Parameter 3. In diesem Beispiel haben wir den Wert fest codiert, aber in realen Anwendungen wäre dies ein Parameter aus dem URI.
  • $this->load->view('welcome_message',$data); lädt die Ansicht „Welcome_Message“ und übergibt die Variable „$data“ an die Ansicht

CodeIgniter-Modell

Lassen Sie uns nun die Ansicht erstellen, auf die wir im obigen Code verwiesen haben. Der Einfachheit halber wird unser Modell nicht mit dem interagieren Datenbank gibt aber einen statischen Kundendatensatz zurück. In den nächsten Tutorials werden wir mit Datenbanken arbeiten.

Erstellen Sie eine Datei Customers_model.php in application/models

Fügen Sie den folgenden Code hinzu

<?php
class Customers_model extends CI_Model {
public function get_customer($id) {
$data['id'] = 3;
$data['first_name'] = 'John';
$data['last_name'] = 'Doe';
$data['address'] = 'Kingstone';
return $data;
}
}

HIER,

  • Die Klasse Customers_model erweitert CI_Model {…} definiert das Modell Customers_model, das CI_Model erweitert.
  • Die öffentliche Funktion get_customer($id) {…} definiert die Get-Customer-Methode basierend auf einer Kunden-ID
  • $data[…] definiert die statischen Werte unseres fiktiven Kunden. Dies sollte eine von der Datenbank zurückgegebene Zeile sein.
  • $data zurückgeben; gibt die Kundendaten zurück.

Das heißt, es gilt für unser Modell. Lassen Sie uns nun die Ansicht „Welcome_Message“ ändern

Öffnen Sie willkommene_Nachricht.php, die sich in befindet

application/views/welcome_message.php

Ersetzen Sie den Code durch Folgendes

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>CodeIgniter MVC Basics</title>
</head>
<body>
<h1>Customer Details Card</h1>
<p>Customer ID : <strong><?=$customer['id']?></strong></p>
<p>First Name  : <strong><?=$customer['first_name']?></strong></p>
<p>Last Name   : <strong><?=$customer['last_name']?></strong></p>
<p>Address     : <strong><?=$customer['address']?></strong></p>
</body>
</html>

Speichern Sie die Änderungen

Laden Sie die folgende URL im Webbrowser

http://localhost:3000/

Sie sollten die Kundenkarte wie im Bild unten sehen können

CodeIgniter-Modell

Zusammenfassung

  • MVC ist ein Architekturmuster, das die Anwendung in drei Hauptkomponenten aufteilt
  • Das Modell ist für die Interaktion mit Datenquellen verantwortlich
  • Der Controller wartet auf eingehende Ressourcenanforderungen der Benutzer
  • In Webanwendungen enthalten Ansichten oft HTML, CSS und optional JavaSkript
  • Ein Controller empfängt die Anfrage des Benutzers, interagiert bei Bedarf mit dem Datenbankmodell und gibt das Ergebnis dann in Form von HTML-Code an den Browser zurück