Tutoriel PHP MVC Framework : exemple CodeIgniter

Qu’est-ce que le framework PHP MVC ?

PHP MVC est un modèle de conception d'application qui sépare les données d'application et la logique métier (modèle) de la présentation (vue). MVC signifie Modèle, Vue et Contrôleur.

Le contrôleur sert d'intermédiaire entre les modèles et les vues.

Considérez le modèle de conception MVC comme une voiture et son conducteur.

La voiture est équipée de pare-brise (vue) que le conducteur (contrôleur) utilise pour surveiller le trafic devant lui, puis la vitesse ou le freinage (modèle) en fonction de ce qu'il voit devant lui.

Pourquoi utiliser le framework PHP MVC ?

  • Les frameworks PHP MVC simplifient le travail avec des technologies complexes en :
    • Masquer tous les détails complexes de mise en œuvre
    • Fournir des méthodes standard que nous pouvons utiliser pour créer nos applications.
    • Augmentation de la productivité des développeurs, car la mise en œuvre de base des activités telles que la connexion à la base de données, la désinfection des entrées utilisateur, etc. est déjà partiellement mise en œuvre.
    • Adhésion aux normes de codage professionnelles

Modèle de conception PHP MVC

Discutons maintenant brièvement de chaque composant du modèle de conception MVC.

Modèle – cette partie concerne la logique métier et les données applicatives. Il peut être utilisé pour effectuer des validations de données, traiter les données et les stocker. Les données peuvent provenir :

  • fichier plat
  • base de données
  • document XML
  • Autres sources de données valides.

– c'est la partie qui traite des demandes de ressources des utilisateurs auprès du serveur.

À titre d'exemple, lorsque les utilisateurs demandent l'URL …/index.php?products=liste, le contrôleur chargera le modèle de produits pour récupérer les données des produits, puis affichera les résultats dans la vue liste.

En un mot, le contrôleur relie les modèles et les vues entre eux en fonction des ressources demandées.

Vues – cette partie traite de la présentation des données à l'utilisateur. C'est généralement sous forme de pages HTML.

Types de framework PHP MVC

Choisir le meilleur framework PHP est un défi.

Vous n'avez pas besoin d'écrire votre propre framework pour bénéficier des avantages de MVC.

Vous devez uniquement essayer de créer votre propre conception d'application liée à MVC pour comprendre le fonctionnement des frameworks MVC.

Une fois que vous êtes à l'aise avec le fonctionnement des frameworks MVC, vous devez passer aux frameworks matures et déjà testés.

Le tableau ci-dessous décrit brièvement certains des frameworks PHP populaires et les fonctionnalités offertes par chaque framework.

Cadre Description

CodeIgniter


CodeIgniter


https://codeigniter.com/

C'est l'un des frameworks PHP MVC les plus populaires. Il est léger et sa courbe d'apprentissage est courte. Il dispose d'un riche ensemble de bibliothèques qui permettent de créer rapidement des sites Web et des applications. Les utilisateurs ayant une connaissance limitée de la programmation POO peuvent également l'utiliser. Les applications alimentées par CodeIgniter incluent :


kohana


kohana


http://kohanaframework.org

Il s'agit d'un cadre sécurisé et léger de contrôleur de vue de modèle hiérarchique HMVC. Il dispose d'un riche ensemble de composants permettant de développer rapidement des applications. Les entreprises qui utilisent Kohana comprennent :


CakePHP


CakePHP


www.cakephp.org

Il est calqué sur Ruby on rails. Il est connu pour des concepts tels que les modèles de conception de logiciels, les conventions de configuration, ActiveRecord, etc. CakePHP les applications alimentées incluent ;


Zend

www.framework.zend.com


Zend

Il s’agit d’un cadre puissant ;

  • Sécurisé, fiable, rapide et évolutif
  • Prend en charge le Web 2.0 et la création de services Web.

Il propose des API de fournisseurs tels que Amazon, Google, Flickr, Yahoo etc. Il est idéal pour développer des applications professionnelles. Les applications propulsées par Zend incluent :

  • PimcoreCMS,
  • DotKernel.

Les entreprises utilisant le framework Zend incluent :

  • BBC
  • Cisco
  • Webex
  • Offers.com

Portage de l'application de sondage d'opinion sur CodeIgniter

Dans ce nouvel article concernant notre nouveau projet tutoriel, nous avons créé une application de sondage PHP. Ici, nous porterons ce code sur CodeIgniter

  • Télécharger la dernière version de CodeIgniter de leur en ligne.
  • Extrayez le contenu du fichier compressé dans votre répertoire de développement dans le répertoire de votre serveur Web. Nous utiliserons ciopinionpoll comme nom de dossier dans cette leçon.
  • Accédez à l'URL http://localhost/ciopinionpoll/

Portage de l'application de sondage d'opinion sur CodeIgniter

Nous allons maintenant porter notre application de sondage d'opinion sur CodeIgniter. Rappelons que notre application était divisée en trois volets majeurs à savoir le ;

  • Contrôleur frontal – c'est la partie qui répond aux requêtes URL et renvoie la page demandée. Ce code ira dans le contrôleur
  • Modèle – c'est le code qui répond aux données demandées et renvoie les données demandées. Ce code ira dans le modèle
  • Vues – c'est le code responsable du formatage et de l'affichage des données. Ce code ira dans la vue

    • Accédez au dossier ciopinionpoll
    • Ouvrez le base de données.php fichier situé dans le répertoire application/config.
    • Localisez les lignes de code suivantes

Paramètres de configuration de la base de données

Paramètres de configuration de la base de données

  • Définissez le nom d'utilisateur sur root
  • Définissez le mot de passe sur votre mot de passe root localhost
  • Nom de la base de données à opinion_poll. Notez que nous utiliserons la base de données créée dans la leçon précédente.
  • Enregistrez les modifications et fermez le fichier.

Créer notre modèle

Ensuite, nous allons créer notre modèle qui étendra le CI_Model. Le CI_Model fait partie des bibliothèques CodeIgniter. Le modèle sera situé dans application/models opinion_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); 
        } 
   } 
?>

ICI,

  • "class Opinion_poll_model extends CI_Model..." est notre modèle qui étend le CI_Model
  • «…parent : : __construct();» appelle le constructeur CI_Model
  • "$this->load->database();" charge la bibliothèque de base de données afin que notre application puisse interagir avec la base de données
  • « $this->db-> » est l'enregistrement actif de CodeIgniter. Vérifie ça lien pour plus d’informations sur le dossier actif.

Créer notre contrôleur Créons maintenant le contrôleur. Nous utiliserons le contrôleur CodeIgniter par défaut situé dans application/controllers/welcome.php. Remplacez ses codes sources par le code suivant.

<?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 */
?>

ICI,

  • "if (!défini('BASEPATH')) exit('Aucun accès direct au script autorisé');" garantit que les utilisateurs n'accèdent pas directement à la classe du contrôleur
  • "la classe Welcome étend CI_Controller…" notre contrôleur étend la classe CI_Controller
  • « fonction publique __construct() » appelle la méthode constructeur de classe de CI_Controller et charge notre modèle Opinion_poll_model
  • « public function index()… » est la fonction qui correspond à index.php. il utilise la classe d'entrée de CodeIgniter pour vérifier si un vote a été soumis, l'ajouter à la base de données puis afficher les résultats. Si le tableau post de la classe d'entrée est vide, il charge la page de vote.
  • « $this->input->post('…') » est la classe d'entrée CodeIgniter qui récupère le contenu de la variable globale $_POST.
  • « $this->opinion_poll_model->add_vote($this->input->post('vote')) » appelle la méthode add_vote du modèle pour ajouter le vote dans la base de données.

Créer nos vues

Rappelons de l'exemple précédent que nous avions deux pages HTML, une pour le vote et l'autre pour les résultats. Nous utiliserons le même code HTML avec des modifications minimes pour créer nos vues. Créez les fichiers suivants dans le répertoire 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>

Créons maintenant la page de résultats results.php

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

Tester notre application

En supposant que le répertoire racine de votre application soit ciopinion, accédez à http://localhost/ciopionpoll/

Test du framework PHP MVC

Cliquez sur le bouton OK, vous verrez le message d'alerte suivant

Test du framework PHP MVC

Votez pour votre candidat préféré puis cliquez sur OK Vous verrez la page de résultats suivante

Test du framework PHP MVC

Pour aller plus loin

CodeIgniter est un framework PHP MVC facile à apprendre et à utiliser qui peut réduire considérablement le temps passé à développer des applications.
CodeIgniter est un framework PHP MVC facile à apprendre et à utiliser qui peut réduire considérablement le temps passé à développer des applications.

Résumé

  • Un framework est un ensemble de bibliothèques qui assurent une implémentation partielle de tâches courantes.
  • PHP dispose d'un certain nombre de frameworks MVC open source matures et testés.
  • Une bonne approche de développement sépare les données de la présentation et encourage l'utilisation d'un point d'entrée unique dans une application.
  • Les applications PHP traditionnelles qui suivent les meilleures pratiques de conception d'applications peuvent être portées vers des frameworks MVC avec des modifications minimes.