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.
Aufrufe โ 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 dieser 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.








