Cadre CodeIgniter MVC (Model View Controller) avec exemple

Qu'est-ce que MVC?

Normes MVC pour Model-View-Control. Il s'agit d'un modèle architectural qui divise l'application en trois composants principaux.

1. Le modèle traite de la logique métier et des interactions avec les bases de données

2. Le contrôleur coordonne les activités entre le modèle et la vue

3. View est responsable de la présentation des données

Voici quelques-uns des avantages du modèle architectural MVC

  • Couplage lâche : les composants existent et fonctionnent indépendamment les uns des autres.
  • Flexibilité – on peut facilement apporter des modifications aux composants individuels
  • Productivité accrue – plusieurs personnes peuvent travailler sur le projet en même temps. Les développeurs front-end peuvent travailler sur les vues et la présentation tandis que les développeurs back-end peuvent se concentrer sur les modèles et comme le système est faiblement couplé, il fonctionne en fin de compte.

Modèle

Le modèle est responsable de l’interaction avec les sources de données. Il s'agit généralement d'une base de données, mais il peut également s'agir d'un service qui fournit les données demandées. Il est également courant que la logique métier soit contenue dans les modèles plutôt que dans le contrôleur. Cette pratique est généralement appelée contrôleur maigre de gros modèle.

Le modèle écrit généralement les données dans la base de données, fournit un mécanisme d'édition, de mise à jour et de suppression des données. Dans une application Web moderne, les modèles utilisent des modèles de conception d'accès aux données tels que l'enregistrement actif pour faciliter l'interaction avec la base de données.

Par exemple, CodeIgniter utilise une bibliothèque intégrée Active Record pour faciliter les modèles tandis que d'autres frameworks tels que Laravel utilisent Eloquent Object Relational Mapper (ORM) qui facilite l'accès aux données.

Contrôleur

Le contrôleur écoute les demandes de ressources entrantes des utilisateurs. Il agit comme intermédiaire entre le modèle et la vue et implémente parfois également certaines règles métier. Disons que le contrôleur reçoit une demande d'enregistrement d'un utilisateur dans la base de données.

Le responsable du traitement peut effectuer une validation des données sur ce qui a été soumis pour garantir que tous les paramètres requis ont été soumis. S'il manque quelque chose, l'utilisateur est redirigé vers la page d'inscription avec le message d'erreur approprié affiché. Le contrôleur peut également demander au modèle d'effectuer davantage de validation en vérifiant si l'adresse e-mail soumise existe déjà. Si toutes les règles de validation réussissent, le contrôleur soumet les données au modèle pour traitement et attend la réponse.

Une fois que le modèle a traité les informations et renvoyé une réponse positive, le contrôleur charge la vue appropriée et transmet les données renvoyées par le modèle en tant que paramètre.

Découvrir

La vue traite des données présentées à l'utilisateur final. Dans les applications Web, les vues contiennent souvent du HTML, du CSS et éventuellement Javascénario. Les vues contiennent un minimum de code de programmation. Le code contenu dans les vues est généralement utilisé pour parcourir des collections de données reçues en tant que paramètres du modèle ou de la fonction d'assistance pour nettoyer les données ou créer des liens pour modifier les enregistrements. La plupart des applications Web modernes utilisent généralement des moteurs de modèles qui définissent leur propre syntaxe qui ressemble davantage à un pseudocode et peut facilement être comprise par les concepteurs. Lorsque vous travaillez avec CodeIgniter, il est courant d'utiliser des balises PHP courtes et des structures de contrôle. Pour afficher quelque chose dans CodeIgniter, on peut utiliser le code suivant

<?=$title?>

Par opposition à

<?php
echo $title;
?>

Les structures de contrôle sont généralement écrites comme suit

<?php foreach ($customers as $customer): ?>
<li>
<p><?=$customer->first_name?><p>
</li>
<?php endforeach; ?>

Comme vous pouvez le voir dans l'exemple ci-dessus, la vue utilisera une combinaison de PHP et HTML au lieu de tout inclure dans du code PHP pur.

Comment fonctionnent les frameworks MVC ?

L'image suivante montre le fonctionnement du framework MVC

Les frameworks MVC fonctionnent

Un contrôleur reçoit la demande de l'utilisateur, interagit avec le modèle de base de données si nécessaire, puis renvoie le résultat au navigateur sous la forme d'un code HTML que le navigateur a interprété dans un format lisible par l'homme et affiché à l'utilisateur.

Contrôleur CodeIgniter

Voyons maintenant ce qui vient de se passer lorsque nous avons chargé l'URL ci-dessus dans le navigateur Web.

Ouvrez le fichier Welcome.php contrôleur situé application/controllers

Vous devriez pouvoir voir le code suivant

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}

ICI,

  • défini('BASEPATH') OR exit('Aucun accès direct au script autorisé'); empêche l'accès direct au contrôleur si la demande ne provient pas de index.php. c'est pour des raisons de sécurité.
  • class Welcome extends CI_Controller {…} définit la classe du contrôleur Welcome et étend la classe parent CI_Controller
  • public function index(){…} définit la méthode d'index qui répond à l'URL http://localhost:3000
    • $this->load->view('welcome_message'); charge la vue Welcome_message qui se trouve dans le répertoire application/views

Nous allons maintenant mettre à jour la méthode d'index comme suit

public function index()
{
$this->load->model('customers_model');
$data['customer'] = $this->customers_model->get_customer(3);
$this->load->view('welcome_message',$data);
}

ICI,

  • $this->load->model('customers_model'); charge le modèle clients.
  • $data['customer'] = $this->customers_model->get_customer(3); appelle la méthode get_customer de customer_model et transmet le paramètre 3. Dans cet exemple, nous avons codé en dur la valeur, mais dans les applications réelles, il s'agirait d'un paramètre de l'URI.
  • $this->load->view('welcome_message',$data); charge la vue Welcome_message et transmet la variable $data à la vue

Modèle CodeIgniter

Créons maintenant la vue que nous avons référencée dans le code ci-dessus. Par souci de simplicité, notre modèle n'interagira pas avec le base de données mais renverra un enregistrement client statique. Nous travaillerons avec des bases de données dans les prochains tutoriels.

Créez un fichier Customers_model.php dans application/models

Ajoutez le code suivant

<?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;
}
}

ICI,

  • la classe Customers_model extends CI_Model {…} définit le modèle Customers_model qui étend CI_Model.
  • public function get_customer($id) {…} définit la méthode d'obtention du client en fonction d'un identifiant client
  • $data[…] définit les valeurs statiques de notre client fictif. Il doit s'agir d'une ligne renvoyée par la base de données.
  • renvoyer $données ; renvoie les données client.

Autrement dit, c'est pour notre modèle. Modifions maintenant la vue Welcome_message

Ouvrez le fichierwelwel_message.php situé dans

application/views/welcome_message.php

Remplacez le code par ce qui suit

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

Enregistrez les modifications

Chargez l'URL suivante dans le navigateur Web

http://localhost:3000/

Vous devriez pouvoir voir la carte client comme indiqué dans l'image ci-dessous

Modèle CodeIgniter

Résumé

  • MVC est un modèle architectural qui divise l'application en trois composants principaux
  • Le modèle est responsable de l'interaction avec les sources de données
  • Le contrôleur écoute les demandes de ressources entrantes des utilisateurs
  • Dans les applications Web, les vues contiennent souvent du HTML, du CSS et éventuellement Javascénario
  • Un contrôleur reçoit la requête de l'utilisateur, interagit avec le modèle de base de données si nécessaire puis renvoie le résultat au navigateur sous forme de code HTML.