CodeIgniter MVC (Model View Controller) Framework-Beispiel
⚡ Intelligente Zusammenfassung
CodeDas Igniter MVC-Framework unterteilt eine Anwendung in Model, View und Controller. Das Model verwaltet Daten und Geschäftslogik, der Controller koordiniert Anfragen und die View präsentiert das Ergebnis. Dies ermöglicht lose Kopplung, Flexibilität und eine höhere Entwicklerproduktivität.

Was ist MVC?
MVC steht für Model-View-Controller. Es handelt sich um ein Architekturmuster, das die Anwendung in drei Hauptkomponenten unterteilt:
- Das Modell befasst sich mit Geschäftslogik und Datenbankinteraktionen.
- Der Controller koordiniert die Aktivitäten zwischen dem Modell und der Ansicht.
- View ist für die Datenpräsentation verantwortlich.
Im Folgenden werden einige Vorteile des MVC-Architekturmusters aufgeführt:
- Lose Kopplung – die Komponenten existieren und funktionieren unabhängig voneinander.
- Flexibilität – einzelne Komponenten lassen sich problemlos verändern.
- Höhere Produktivität – mehrere Personen können gleichzeitig am Projekt arbeiten. Frontend-Entwickler kümmern sich um Ansichten und Präsentation, während Backend-Entwickler sich auf die Modelle konzentrieren. Da das System lose gekoppelt ist, funktioniert am Ende alles reibungslos zusammen.
Modell
Das Modell ist für die Interaktion mit Datenquellen zuständig. Dies ist üblicherweise eine Datenbank, kann aber auch ein Dienst sein, der die angeforderten Daten bereitstellt. Es ist außerdem üblich, die Geschäftslogik im Modell und nicht im Controller zu implementieren. Dieses Vorgehen wird gemeinhin als „umfangreiches Modell, schlanker Controller“ bezeichnet.
Das Datenmodell schreibt üblicherweise Daten in die Datenbank und bietet Mechanismen zum Bearbeiten, Aktualisieren und Löschen von Daten. In modernen Webanwendungen verwenden Datenzugriffsmuster wie Active Record, um die Interaktion mit der Datenbank zu vereinfachen.
Zum Beispiel, CodeIgniter verwendet eine integrierte Active Record-Bibliothek zur Unterstützung der Modelle, während andere Frameworks wie Laravel den Eloquent Object Relational Mapper (ORM) für den Datenzugriff nutzen.
Controller
Der Controller empfängt Ressourcenanfragen von Benutzern. Er fungiert als Schnittstelle zwischen Modell und Ansicht und implementiert mitunter auch Geschäftsregeln. Angenommen, der Controller erhält eine Anfrage zur Registrierung eines Benutzers in der Datenbank.
Der Controller kann die übermittelten Daten validieren, um sicherzustellen, dass alle erforderlichen Parameter vorhanden sind. Fehlt ein Parameter, wird der Benutzer mit einer entsprechenden Fehlermeldung zur Registrierungsseite weitergeleitet. Der Controller kann das Modell auch auffordern, weitere Validierungen durchzuführen, beispielsweise zu prüfen, ob die angegebene E-Mail-Adresse bereits existiert. Sind alle Validierungsregeln erfüllt, ü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.
Ansehen
Die Ansicht befasst sich mit Daten, die dem Endbenutzer präsentiert werden. In Webanwendungen enthalten Ansichten häufig HTML, CSS und optional JavaSkriptViews enthalten minimalen Programmcode, in der Regel nur so viel, wie nötig ist, um Datensammlungen aus dem Modell zu durchlaufen oder eine Hilfsfunktion zum Bereinigen von Daten oder Erstellen von Bearbeitungslinks bereitzustellen. Die meisten modernen Webanwendungen verwenden Template-Engines mit einer eigenen, pseudocodeähnlichen Syntax, die Designer verstehen können. Bei der Arbeit mit CodeBei Igniter ist es üblich, kurze PHP-Tags und Kontrollstrukturen zu verwenden. Um etwas anzuzeigen in CodeIgniter, Sie könnten folgenden Code verwenden:
<?=$title?>
Im Gegensatz zu:
<?php
echo $title;
?>
Kontrollstrukturen werden üblicherweise 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 MVC-Frameworks funktionieren
Die folgende Abbildung zeigt, wie das MVC-Framework funktioniert.
Ein Controller empfängt die Anfrage des Benutzers, interagiert gegebenenfalls mit dem Datenbankmodell und gibt dann das Ergebnis in Form von HTML-Code an den Browser zurück, der es in ein für Menschen lesbares Format interpretiert und dem Benutzer anzeigt.
CodeZündsteuerung
Lassen Sie uns nun aufschlüsseln, was beim Laden geschah. URL Öffnen Sie im Webbrowser die Datei Welcome.php im Verzeichnis application/controllers. Sie sollten folgenden Code sehen:
<?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('No direct script access allowed');` verhindert den direkten Zugriff auf den Controller, falls die Anfrage nicht über `index.php` erfolgte. Dies dient der Sicherheit.
- Die Klasse Welcome extends CI_Controller {…} definiert die Welcome-Controller-Klasse und erweitert die übergeordnete Klasse CI_Controller.
- public function index(){…} definiert die Indexmethode, die auf die URL
http://localhost:3000. - $this->load->view('welcome_message'); lädt die Ansicht welcome_message aus dem Verzeichnis application/views.
Wir werden die Indexmethode nun 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 Methode get_customer des Modells customers_model auf und übergibt den Parameter 3. In diesem Beispiel ist der Wert fest codiert, in realen Anwendungen wäre dies jedoch ein Parameter aus der URI.
- $this->load->view('welcome_message',$data); lädt die Ansicht welcome_message und übergibt die Variable $data.
CodeZündermodell
Erstellen wir nun das im obigen Code erwähnte Modell. Der Einfachheit halber interagiert unser Modell nicht mit dem … Datenbank Dies gibt jedoch einen statischen Kundendatensatz zurück. In den nächsten Tutorials werden wir mit Datenbanken arbeiten. Erstellen Sie eine Datei namens Customers_model.php im Verzeichnis application/models und fügen Sie 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.
- public function 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 war's mit unserem Modell. Nun passen wir die Ansicht „welcome_message“ an. Öffnen Sie die Datei „welcome_message.php“ im folgenden Verzeichnis:
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 und laden Sie Folgendes: URL im Webbrowser: http://localhost:3000/Die Kundenkarte sollte wie im Bild unten dargestellt aussehen.


