PHP MVC Framework Tutorial: CodeIgniter-Beispiel
Was ist das PHP-MVC-Framework?
PHP MVC ist ein Anwendungsentwurfsmuster, das die Anwendungsdaten und die Geschäftslogik (Modell) von der Präsentation (Ansicht) trennt. MVC steht für Model, View & Controller.
Der Controller vermittelt zwischen den Modellen und Ansichten.
Stellen Sie sich das MVC-Entwurfsmuster als ein Auto und einen Fahrer vor.
Das Auto verfügt über Windschutzscheiben (Ansicht), mit denen der Fahrer (Controller) den Verkehr vor ihm überwacht und dann die Geschwindigkeit überwacht oder bremst (Modell), je nachdem, was er vor sich sieht.
Warum PHP MVC Framework verwenden?
- PHP MVC-Frameworks vereinfachen die Arbeit mit komplexen Technologien durch:
- Alle komplexen Implementierungsdetails verbergen
- Bereitstellung von Standardmethoden, die wir zum Erstellen unserer Anwendungen verwenden können.
- Erhöhte Entwicklerproduktivität, da die Basisimplementierung von Aktivitäten wie der Verbindung zur Datenbank, der Bereinigung von Benutzereingaben usw. bereits teilweise implementiert ist.
- Einhaltung professioneller Codierungsstandards
PHP MVC-Entwurfsmuster
Lassen Sie uns nun kurz jede Komponente des MVC-Entwurfsmusters besprechen.
Modell – Dieser Teil befasst sich mit der Geschäftslogik und den Anwendungsdaten. Es kann verwendet werden, um Datenvalidierungen durchzuführen, Daten zu verarbeiten und zu speichern. Die Daten können stammen von;
- flache Datei
- Datenbank
- XML-Dokument
- Andere gültige Datenquellen.
Controller – In diesem Teil geht es um die Anfragen der Benutzer nach Ressourcen vom Server.
Als Beispiel, wenn der Benutzer nach der URL fragt …/index.php?products=list, lädt der Controller das Produktmodell, um die Produktdaten abzurufen, und gibt dann die Ergebnisse in der Listenansicht aus.
Kurz gesagt: Der Controller verknüpft die Modelle und Ansichten abhängig von den angeforderten Ressourcen miteinander.
Views – In diesem Teil geht es um die Präsentation der Daten für den Benutzer. Dies erfolgt in der Regel in Form von HTML-Seiten.
Arten von PHP-MVC-Frameworks
Die Auswahl des besten PHP-Frameworks ist eine Herausforderung.
Sie müssen kein eigenes Framework schreiben, um von den Vorteilen von MVC zu profitieren.
Sie sollten nur versuchen, ein eigenes MVC-bezogenes Anwendungsdesign zu erstellen, um zu verstehen, wie MVC-Frameworks funktionieren.
Sobald Sie mit der Funktionsweise von MVC-Frameworks vertraut sind, sollten Sie zu den ausgereiften und bereits getesteten Frameworks übergehen.
Die folgende Tabelle beschreibt kurz einige der beliebten PHP-Frameworks und die Funktionen, die jedes Framework bietet.
Unser Ansatz | Beschreibung |
---|---|
|
Es ist eines der beliebtesten PHP-MVC-Frameworks. Es ist leicht und hat eine kurze Lernkurve. Es verfügt über einen umfangreichen Satz an Bibliotheken, die beim schnellen Erstellen von Websites und Anwendungen helfen. Benutzer mit begrenzten Kenntnissen der OOP-Programmierung können es auch verwenden. Zu den von CodeIgniter betriebenen Anwendungen gehören: |
|
Es handelt sich um ein sicheres und leichtes Framework für Hierarchical Model View Controller (HMVC). Es verfügt über einen umfangreichen Satz von Komponenten für die schnelle Entwicklung von Anwendungen. Zu den Unternehmen, die Kohana verwenden, gehören: |
|
Es ist Ruby on Rails nachempfunden. Es ist bekannt für Konzepte wie Software-Designmuster, Konvention statt Konfiguration, ActiveRecord usw. KuchenPHP Zu den angetriebenen Anwendungen gehören: |
|
Es handelt sich um ein leistungsstarkes Framework.
Es verfügt über APIs von Anbietern wie AmazonGoogle Flickr, Yahoo usw. Es ist ideal für die Entwicklung von Geschäftsanwendungen. Zu den von Zend betriebenen Anwendungen gehören:
Zu den Unternehmen, die das Zend-Framework verwenden, gehören:
|
Portierung der Meinungsumfrageanwendung auf CodeIgniter
In diesem Lernprogramm, haben wir eine PHP-Umfrageanwendung erstellt. Hier portieren wir diesen Code nach CodeIgniter
- Herunterladen die neueste Version von CodeIgniter von ihrem Webseite.
- Extrahieren Sie den Inhalt der ZIP-Datei in Ihr Entwicklungsverzeichnis in Ihrem Webserververzeichnis. In dieser Lektion verwenden wir ciopinionpoll als Ordnernamen.
- Navigieren Sie zur URL http://localhost/ciopinionpoll/
Wir werden jetzt unsere Meinungsumfrageanwendung auf CodeIgniter portieren. Denken Sie daran, dass unsere Bewerbung in drei Hauptkomponenten unterteilt war:
- Front-Controller – das ist der Teil, der auf URL-Anfragen reagiert und die angeforderte Seite zurückgibt. Dieser Code wird in den Controller übernommen
- Modell – Dies ist der Code, der auf angeforderte Daten reagiert und die angeforderten Daten zurückgibt. Dieser Code wird in das Modell übernommen
-
Ansichten – Dies ist der Code, der für die Formatierung und Anzeige der Daten verantwortlich ist. Dieser Code wird in die Ansicht übernommen
- Navigieren Sie zum Ordner „ciopinionpoll“.
- Öffnen Sie den Microsoft Store auf Ihrem Windows-PC. database.php Datei im Verzeichnis application/config.
- Suchen Sie die folgenden Codezeilen
Datenbankkonfigurationseinstellungen
- Legen Sie den Benutzernamen auf „root“ fest
- Legen Sie das Passwort auf Ihr Localhost-Root-Passwort fest
- Datenbankname für Opinion_poll. Beachten Sie, dass wir die in der vorherigen Lektion erstellte Datenbank verwenden werden.
- Speichern Sie die Änderungen und schließen Sie die Datei.
Erstellen unseres Modells
Als nächstes erstellen wir unser Modell, das das CI_Model erweitert. Das CI_Model ist Teil der CodeIgniter-Bibliotheken. Das Modell befindet sich in application/models meinung_poll_model.php
<?php class Opinion_poll_model extends CI_Model { public function __construct() { $this->load->database(); } public function total_votes() { $query = $this->db->select('COUNT(choice) as choices_count')->get('js_libraries'); return $query->row()->choices_count; } public function get_results() { $libraries = array("", "JQuery", "MooTools", "YUI Library", "Glow"); $table_rows = ''; for ($i = 1; $i < 5; $i++) { $sql_stmt = "SELECT COUNT(choice) choices_count FROM js_libraries WHERE choice = $i;"; $result = $model-> select($sql_stmt); $table_rows .= "<tr><td>" . $ libraries [$i] . " Got:</td><td><b>" . $result[0] . "</b> votes</td></tr>"; } public function add_vote($choice) { $ts = date("Y-m-d H:i:s"); $data = array('choice' => $choice, 'ts' => $ts); $this->db->insert('js_libraries', $data); } } ?>
HIER,
- „class Opinion_poll_model erweitert CI_Model…“ ist unser Modell, das das CI_Model erweitert
- „…parent:: __construct();“ ruft den CI_Model-Konstruktor auf
- „$this->load->database();“ lädt die Datenbankbibliothek, damit unsere Anwendung mit der Datenbank interagieren kann
- „$this->db->“ ist der aktive Datensatz von CodeIgniter. Überprüfen Sie dies Link Weitere Informationen zum aktiven Datensatz finden Sie hier.
Erstellen unseres Controllers Lassen Sie uns nun den Controller erstellen. Wir verwenden den Standard-CodeIgniter-Controller in application/controllers/welcome.php. Ersetzen Sie dessen Quellcodes durch den folgenden Code.
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('opinion_poll_model'); } public function index() { if ($this->input->post('submitbutton') && !$this->input->post('vote')) { echo "<script>alert('You did not vote!');</script>"; } if ($this->input->post('vote')) { $this->opinion_poll_model->add_vote($this->input->post('vote')); $data['total_votes'] = $this->opinion_poll_model->total_votes(); $data['rows'] = $this->opinion_poll_model->get_results(); $this->load->view('results', $data); } else { $this->load->view('opinion_poll_form'); } } } /* End of file welcome.php */ /* Location: ./application/controllers/welcome.php */ ?>
HIER,
- „if (!defined('BASEPATH')) exit('Kein direkter Skriptzugriff erlaubt');“ stellt sicher, dass Benutzer nicht direkt auf die Controller-Klasse zugreifen
- „Klasse Willkommen erweitert CI_Controller…“ Unser Controller erweitert die Klasse CI_Controller
- „public function __construct()“ ruft die Klassenkonstruktormethode von CI_Controller auf und lädt unser Opinion_poll_model-Modell
- „public function index()…“ ist die Funktion, die index.php zugeordnet wird. Es verwendet die Eingabeklasse von CodeIgniter, um zu prüfen, ob eine Abstimmung abgegeben wurde, fügt sie der Datenbank hinzu und zeigt dann die Ergebnisse an. Wenn das Post-Array der Eingabeklasse leer ist, wird die Abstimmungsseite geladen.
- „$this->input->post('…')“ ist die CodeIgniter-Eingabeklasse, die den Inhalt der globalen Variablen $_POST erfasst.
- „$this->opinion_poll_model->add_vote($this->input->post('vote'))“ ruft die add_vote-Methode des Modells auf, um die Stimme zur Datenbank hinzuzufügen.
Unsere Ansichten schaffen
Erinnern Sie sich an das vorherige Beispiel, in dem wir zwei HTML-Seiten hatten, eine für die Abstimmung und die andere für die Ergebnisse. Wir werden denselben HTML-Code mit minimalen Änderungen verwenden, um unsere Ansichten zu erstellen. Erstellen Sie die folgenden Dateien im Verzeichnis application/views
opinion_poll_form.php <html> <head> <title> JavaScript Libraries - Opinion Poll </title> </head> <body> <h2>JavaScript Libraries - Opinion Poll</h2> <p><b>What is your favorite JavaScript Library?</b></p> <form method="POST" action="index.php"> <p> <input type="radio" name="vote" value="1" /> JQuery <br /> <input type="radio" name="vote" value="2" /> MooTools <br /> <input type="radio" name="vote" value="3" /> YUI Library <br /> <input type="radio" name="vote" value="4" /> Glow </p> <p> <input type="submit" name="submitbutton" value="OK" /> </p> </form> </body> </html>
Lassen Sie uns nun die Ergebnisseite results.php erstellen
<html> <head> <title>JavaScript Libraries - Opinion Poll Results</title> </head> <body> <h2>JavaScript Libraries - Opinion Poll Results</h2> <p><b>What is your favorite JavaScript Library?</b></p> <p><b><?php echo $total_votes; ?></b> people have thus far taken part in this poll:</p> <p><table><tr><td> <?php print($rows); ?> </tr></td></table></p> <p><a href="#">Return to voting page</a></p> </body> </html>
Testen unserer Anwendung
Angenommen, das Stammverzeichnis Ihrer Anwendung ist ciopinion, navigieren Sie zu http://localhost/ciopionpoll/
Klicken Sie auf die Schaltfläche „OK“. Die folgende Warnmeldung wird angezeigt.
Stimmen Sie für Ihren Lieblingskandidaten und klicken Sie dann auf OK. Sie sehen die folgende Ergebnisseite
Fazit
CodeIgniter ist ein einfach zu erlernendes und zu verwendendes PHP-MVC-Framework, das den Zeitaufwand für die Entwicklung von Anwendungen erheblich reduzieren kann.
CodeIgniter ist ein einfach zu erlernendes und zu verwendendes PHP-MVC-Framework, das den Zeitaufwand für die Entwicklung von Anwendungen erheblich reduzieren kann.
Zusammenfassung
- Ein Framework ist eine Reihe von Bibliotheken, die eine teilweise Implementierung allgemeiner Aufgaben ermöglichen.
- PHP verfügt über eine Reihe ausgereifter und getesteter Open-Source-MVC-Frameworks.
- Ein guter Entwicklungsansatz trennt die Daten von der Präsentation und fördert die Verwendung eines einzigen Einstiegspunkts in eine Anwendung.
- Herkömmliche PHP-Anwendungen, die Best Practices für das Anwendungsdesign befolgen, können mit minimalen Änderungen auf MVC-Frameworks portiert werden.