Tutoriel sur le framework PHP MVC
⚡ Résumé intelligent
L'architecture du framework PHP MVC sépare les données applicatives et la logique métier de la présentation, grâce aux modèles, aux vues et aux contrôleurs. CodeIgniter rend ce modèle pratique, permettant aux développeurs PHP de créer plus rapidement des applications web sécurisées et maintenables.
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 possède des pare-brise (vue) que le conducteur (contrôleur) utilise pour surveiller la circulation devant lui, puis accélérer ou freiner (modèle) en fonction de ce qu'il voit devant lui.
Voyons maintenant pourquoi un framework construit sur ce modèle mérite d'être utilisé.
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 construire nos applications
- Augmentation de la productivité des développeurs, car les implémentations de base d'activités telles que la connexion à la base de données et la validation des entrées utilisateur sont déjà partiellement implémentées.
- Encourager le respect des 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.
Contrôleur – c'est cette partie qui traite les demandes de ressources adressées au serveur par l'utilisateur.
Par exemple, lorsque l'utilisateur demande URL …/index.php?products=listeLe contrôleur chargera le modèle des produits pour récupérer les données des produits, puis affichera les résultats dans la vue de 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 décrit la présentation des données à l'utilisateur, 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 chacun d'eux.
| FrameworkTA | Description |
|---|---|
|
|
Il s'agit de l'un des frameworks PHP MVC les plus populaires, actuellement dans sa quatrième version majeure (CodeIgniter 4). Léger et facile à prendre en main, il dispose d'un ensemble complet de bibliothèques permettant de créer rapidement des sites web et des applications. Même les utilisateurs ayant des connaissances limitées en programmation orientée objet peuvent l'utiliser. Les applications créées avec CodeL'allumeur comprend :
|
|
Il s'agit d'un framework HMVC (Hierarchical Model View Controller) sécurisé et léger. À noter: Kohana a été officiellement abandonné en 2017 ; sa dernière version stable était la 3.3.6 (juillet 2016). Le fork communautaire Koseven a continué à développer son code source. Parmi les entreprises qui utilisaient Kohana, on peut citer : |
|
Il s'inspire de Ruby on Rails et bénéficie d'une maintenance active (version 5.x). Il est reconnu pour des concepts tels que les patrons de conception, le principe de la convention plutôt que de la configuration, ActiveRecord, etc. CakePHP les applications alimentées incluent ; |
|
|
Il s’agit d’un cadre puissant ;
C'est idéal pour le développementping Applications métier. En 2020, Zend Framework a été remplacé par le projet open source Laminas. Les applications utilisant Zend/Laminas incluent :
Parmi les entreprises ayant utilisé le framework Zend, on peut citer :
|
Framework PHP MVC vs PHP pur : principales différences
Qu'est-ce qu'un framework change concrètement ? Le PHP pur offre une liberté totale, mais chaque projet finit par nécessiter de réinventer le routage, la validation et l'accès à la base de données. Un framework PHP MVC standardise ces tâches répétitives, garantissant ainsi la cohérence du code entre les projets et les équipes.
| Aspect | PHP simple | Framework PHP MVC |
|---|---|---|
| Code organisation | HTML, SQL et logique mélangés dans des fichiers uniques | Séparés en modèles, vues et contrôleurs |
| Accès à la base de données | Des requêtes manuscrites sur chaque page | Générateur de requêtes intégré ou ORM avec liaison de paramètres |
| Sécurité | Le développeur doit se souvenir de toutes les mesures de sécurité. | Filtrage des entrées, protection XSS et CSRF inclus |
| Entretien | Les modifications se propagent de manière imprévisible à travers les fichiers | Chaque couche peut changer indépendamment |
👍 Astuce: Commencez par créer un petit projet PHP simple, comme le sondage ci-dessous ; les difficultés liées au code mixte rendent l’intérêt de la séparation MVC évident.
Portage de l'application de sondage d'opinion vers Codeallumeur
Dans ce nouvel article concernant notre nouveau projet tutorielNous avons créé une application de sondage en PHP. Ici, nous allons porter ce code vers Codeallumeur
- Télécharger la dernière version de CodeAllumeur de leur en ligne.
- ExtracCopiez le contenu du fichier zip dans votre répertoire de développement, situé dans le répertoire de votre serveur web. Dans cette leçon, nous utiliserons le nom de dossier ciopinionpoll.
- Naviguez vers le URL http://localhost/ciopinionpoll/
Le CodeLa page d'accueil d'Igniter ci-dessus confirme que le framework est correctement installé. Nous allons maintenant porter notre application de sondage d'opinion vers CodeAllumeur. Rappelons que notre application était divisée en trois composants principaux, à savoir ;
- Contrôleur avant – c'est la partie qui répond à URL Effectue la requête et renvoie la page demandée. Ce code sera inséré dans le contrôleur.
- Modèle – il s'agit du code qui répond aux requêtes de données et renvoie les données demandées. Ce code sera intégré au modèle.
- Vues – c'est le code responsable du formatage et de l'affichage des données. Ce code ira dans la vue
Paramètres de configuration de la base de données
Pour configurer la connexion à la base de données :
- 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
- Définissez le nom d'utilisateur sur root
- Définissez le mot de passe sur votre mot de passe root localhost
- Nommez la base de données « opinion_poll ». Notez que nous utiliserons la base de données créée lors de 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 de CodeBibliothèques Igniter. Le modèle se trouvera dans application/models. opinion_poll_model.php
<?php
class Opinion_poll_model extends CI_Model
{
public function __construct()
{
parent::__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++)
{
$query = $this->db->select('COUNT(choice) as choices_count')
->where('choice', $i)
->get('js_libraries');
$table_rows .= "<tr><td>" . $libraries[$i] . " Got:</td><td><b>" . $query->row()->choices_count . "</b> votes</td></tr>";
}
return $table_rows;
}
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 CodeEnregistrement actif d'Igniter. Vérifiez ceci lien pour plus d’informations sur le dossier actif.
Création de notre contrôleur
Créons maintenant le contrôleur. Nous utiliserons la configuration par défaut. CodeLe contrôleur Igniter se trouve dans application/controllers/welcome.php. Remplacez son code source 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
- La fonction publique __construct() appelle le constructeur de la classe CI_Controller et charge notre modèle Opinion_poll_model.
- La fonction « public function index()… » correspond à la fonction qui fait référence à index.php. Elle utilise CodeLa classe d'entrée d'Igniter vérifie si un vote a été soumis, l'ajoute à la base de données, puis affiche les résultats. Si le tableau `post` de la classe d'entrée est vide, la page de vote est chargée.
- « $this->input->post('…') » est le CodeClasse d'entrée Igniter 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
Rappelez-vous de l'exemple précédent : nous avions deux pages HTML, l'une pour le vote et l'autre pour les résultats. Nous allons utiliser le même code HTML, avec quelques modifications mineures, 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 ciopinionpoll, accédez à http://localhost/ciopinionpoll/
La page de vote ci-dessus provient de notre vue opinion_poll_form. Cliquez sur OK sans sélectionner d'option et vous verrez le message d'alerte suivant.
Votez pour votre bibliothèque préférée, puis cliquez sur OK. La page de résultats suivante s'affichera.
Cela confirme que les trois couches fonctionnent ensemble : le contrôleur a reçu le vote, le modèle l’a stocké et comptabilisé, et la vue a affiché les totaux.









