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.

  • ???? ️ Kernmuster: Das MVC-Modell unterteilt eine Anwendung in Modell-, Ansichts- und Controller-Komponenten.
  • 💾 Modell: Interagiert mit der Datenquelle und enthält die Geschäftslogik, oft über Active Record.
  • ️ Regler: Hört auf Anfragen, validiert Eingaben und koordiniert Modell und Ansicht.
  • 🖼️ Ansicht: Die Daten werden als HTML, CSS und minimales PHP präsentiert, wobei aufwändige Logik vermieden wird.
  • 🔗 Lose Kopplung: Die Komponenten arbeiten unabhängig voneinander, sodass Front-End- und Back-End-Arbeiten parallel ausgeführt werden können.
  • ⚡ Kurztags: CodeIgniter-Views verwenden häufig kurze PHP-Echo-Tags für übersichtlichere Templates.
  • 🔁 Anfrageablauf: Vom Controller zum Modell zur Ansicht und dann vom HTML zurück zum Browser.

CodeIgniter MVC-Framework

Was ist MVC?

MVC steht für Model-View-Controller. Es handelt sich um ein Architekturmuster, das die Anwendung in drei Hauptkomponenten unterteilt:

  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 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.

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.

Kundendatenkarte erstellt von CodeZünder

Häufig gestellte Fragen

Das bedeutet, dass die Geschäftslogik im Modell enthalten ist, keeping Der Controller ist schlank und auf das Routing von Anfragen fokussiert. Dadurch ist die Logik wiederverwendbar und der Controller leichter lesbar und testbar.

Eine Ansicht sollte ausschließlich Daten darstellen. Keeping Die Logik dahinter trennt die Zuständigkeiten, sodass Designer das Layout bearbeiten können, ohne die Geschäftsregeln zu berühren, und dieselben Daten in verschiedenen Ansichten angezeigt werden können.

Active Record ist ein integrierter Abfragegenerator, der es Modellen ermöglicht, die Datenbank mithilfe von Methodenaufrufen anstelle von rohem SQL zu lesen und zu schreiben. Er hilft auch, SQL-Injection durch Eskalation zu verhindern.ping Werte.

KI kann aus einer Feature-Beschreibung passende Controller-, Modell- und Ansichtsdateien generieren und dabei die Namenskonsistenz wahren. RevÜberprüfen Sie die generierten Abfragen und deren Validierung, bevor Sie sie ausführen.

Der kurze `echo`-Tag ist eine kompakte Möglichkeit, einen Wert in einer Ansicht auszugeben. Der vollständige PHP-Tag-Block wird für Anweisungen und Kontrollstrukturen verwendet. Beide sind hinsichtlich der Ausgabe gleichwertig, aber kurze Tags sorgen für übersichtlichere Ansichten.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: