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

CodeIgniter


CodeIgniter


https://codeigniter.com/

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:


Kohana


Kohana


http://kohanaframework.org

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:


KuchenPHP


KuchenPHP


www.cakephp.org

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:


Zend

www.framework.zend.com


Zend

Es handelt sich um ein leistungsstarkes Framework.

  • Sicher, zuverlรคssig, schnell und skalierbar
  • Unterstรผtzt Web 2.0 und die Erstellung von Webdiensten.

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:

  • Pimcore CMS,
  • DotKernel.

Zu den Unternehmen, die das Zend-Framework verwenden, gehรถren:

  • BBC
  • Cisco
  • Webex
  • Offers.com

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/

Portierung der Meinungsumfrageanwendung auf CodeIgniter

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

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/

Testen des PHP-MVC-Frameworks

Klicken Sie auf die Schaltflรคche โ€žOKโ€œ. Die folgende Warnmeldung wird angezeigt.

Testen des PHP-MVC-Frameworks

Stimmen Sie fรผr Ihren Lieblingskandidaten und klicken Sie dann auf OK. Sie sehen die folgende Ergebnisseite

Testen des PHP-MVC-Frameworks

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.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: