3
Je m’appelle François KOBON, Consultant
Spécialiste en Développement Web/Mobile/CMS.
Hey, Hello !
Suivez-moi sur Twitter @fkobon et mon blog fkobon.ci
‣ Un Framework, Kézako ?
‣ Fonctionnement du MVC
‣ Avantages / Inconvénients
‣ Exemples
6
Introduction aux Frameworks
1. Un Framework,
Kézako ?
7
Existe dans tous les langages (C++, PHP, Java…)
Framework « Cadre de travail », facilite le travail du dev
Code structuré, un ensemble de fonctions/classes
déjà implémentée et prête à l’emploi.
Bundle
Permet d’intégrer du code/fonctionnalités déjà
écrit (réutilisable dans divers projets, écrit par/
pour la communauté).
2. Fonctionnement
du MVC
8
Structure une application :
‣ Présentation
‣ Base de donnée
‣ Applicative
Model > le modèle manipule les données, requête BDD, calcule, transformation
View > affiche la donnée, formulaire HMTL, interface graphique
Controller > tout le reste, liaison Vue-Modèle, gestion des évènements
3. Avantages &
Inconvénients
9
Avantages
‣ Maintenance facile (Design & Code)
‣ Lecture facile du code une fois habitué
‣ Documentation + Communauté
‣ Implémentation facile grâce aux Bundle
Inconvénients
‣ Trois fichiers minimum pour une page
‣ Prise en main demande assez de pratique
‣ Contraintes pour coder
‣ Co.. co.. codeIgni…, ça se mange ?
‣ Comment ça marche ce machin ?
‣ Structure et Aborescence
‣ Alors on l’installe de p*** de truc ?
6
A la découverte de CodeIgniter
1. C’est quoi
CodeIgnter ?
13
Sortie de la v1 le 28 février 2006
CodeIgniter est un framework PHP permettant de
construire des applications web (aussi des site
Internet) aussi robuste que sécurisé, modulable et
évolutive.
15
C’est ICI que vous allez coder !
CodeIgniter est basé sur le concept de Programmation Orientée
Objet (POO) et sur l’architecture MVC. Il offre :
Des classes références :
‣ « config » pour récupérer toute votre configuration. Vous aller pouvoir
personnaliser votre Framework ;
‣ « database » pour les bases de données ;
‣ « form_validation » pour simplifier la vérification de vos formulaires ;
‣ « session » pour les sessions. CodeIgniter n’utilise pas les sessions
natives mais son propre système ;
‣ …
1. Pourquoi
CodeIgnter ?
16
C’est ICI que vous allez coder !
CodeIgniter est basé sur le concept de Programmation Orientée
Objet (POO) et sur l’architecture MVC. Il offre :
Des helpers
‣ « URL Helpers » vous aideront dans la création de vos lien ;
‣ « Form Helpers » vous aideront à la création de vos formulaires ;
‣ « Text Helpers » vous permettrons de manipuler des chaines de
caractères.
‣ « File Helpers » vous aiderons à manipuler les fichiers ;
‣ …
Les Helpers (ou fonction d’aide), et comme leur nom l’indique, son là pour vous aider. Chaque
fichier d’aide représente un ensemble de fonctions dans une catégorie particulière.
Les Helpers références, se trouvent par défaut dans le Framework
1. Pourquoi
CodeIgnter ?
2. Comment ça
marche
17 Diagramme d'application
Le graphique suivant illustre la manière dont les données circulent dans le système:
‣ Le fichier index.php sert de contrôleur frontal, initialisant les ressources de base nécessaires à
l'exécution de CodeIgniter.
‣ Le routeur examine la requête HTTP pour déterminer son utilisation.
‣ Si un fichier cache existe, il est envoyé directement au navigateur, ignorant l'exécution normale du
système.
2. Comment ça
marche ?
18 Diagramme d'application
Le graphique suivant illustre la manière dont les données circulent dans le système:
‣ Sécurité. Avant le chargement du contrôleur d'application, la demande HTTP et les données soumises
par l'utilisateur sont filtrées pour la sécurité.
‣ Le contrôleur charge le modèle, les bibliothèques principales, les assistants et toutes les autres
ressources nécessaires au traitement de la demande spécifique.
‣ La vue finalisée est rendue puis envoyée au navigateur Web pour être vue. Si la mise en cache est
activée, la vue est d'abord mise en cache afin d'être servie lors des demandes suivantes.
Contenu du dossier codeigniter :
▫ application/ c'est le dossier dans lequel nous allons travailler
▫ system/ c'est le dossier qui contient le cœur de CodeIgniter. Vous
ne devez jamais modifier son contenu !
▫ user_guide/ la même doc que celle disponible en ligne.
Vous pouvez supprimer ce dossier.
▫ composer.json WTF mdr, composer, le gestion de dépendance
PHP ça vous parle ?
▫ le fichier index.php c'est le fichier que l'internaute appellera
lorsqu'il se connectera à votre site. Il est très important, à ne pas
toucher.
19
3. Structure /
Arborescence
Contenu du dossier application :
▫ config/ ce dossier contient la configuration de notre site
▫ controllers/ la liste de nos contrôleurs (c'est la prochaine étape)
▫ helpers/ la liste de nos helpers (nous en parlerons plus tard).
▫ models/ la liste de nos modèles (nous en parlerons plus tard).
▫ views/ la liste de nos vues (nous en parlerons plus tard)
20
3. Structure /
Arborescence
Le dossier application est celui dans lequel nous allons passer tout notre temps. Comme vous pouvez le voir, il a de nombreux
sous-dossiers. Voici ceux qui vont nous intéresser. Ignorez les autres dossiers pour le moment, nous y reviendrons plus tard.
Les contrôleurs représentent le cœur de votre application. Ils
vont faire le lien entre les données et l'affichage. Ils seront la
"logique" de votre application.
23
3. Les controllers
Fonctionnement des contrôleurs
Dans le dossier controllers vous trouverez un fichier welcome.php, ouvrez le. Plusieurs
choses nous intéresse :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index() {
$this->load->view('welcome_message');
}
}
24
3. Les controllers
Les urls avec CodeIgniter
Si vous avez bien suivi, vous vous demandez certainement comment ça se fait que
lorsque vous allez sur votre site c'est le contrôleur Welcome qui est chargé.
En fait, CodeIgniter utilise un système de routes très simple. Le contrôleur est
directement renseigné dans l'url.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
// Par convention, le nom de la classe a une majuscule
class Utilisateur extends CI_Controller {
// La méthode profil qui sera appelé a un paramètre "$id". Dans notre exemple, il vaudra 1.
public function profil($id) {
}
}
25
3. Les controllers
Controller par défaut
Si nous ne mettons aucun argument, nous appelons directement le domaine.
nous pouvons définir quel contrôleur sera appelé si aucun n'est spécifié. Ouvrez le fichier
application/config/routes.php et regardez cette ligne :
$route['default_controller'] = "welcome";
Supprimer le index.php des urls CodeIgniter
Vous pouvez supprimer si cela vous chante le index.php de vos lien codeigniter. Pour le
faire créer un fichier .htaccess et ajouter cette portion de code :
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Ouvez application/config/config.php puis passez
la variable $config[‘index_page'] à vide
$config[‘index_page'] = "index.php"; > $config[‘index_page'] = « ";
26
3. Les vues
Si vous vous rendez dans le dossier views dans application, vous verrez la vue
welcome_message, ouvrez la. Vous trouvez une page HTML toute simple.
C'est celle-ci qui est affichée à l'écran lorsque vous affichez le site.
Comment ça marche ?
Comprendre la notion de vue
Une vue est tout simplement un fichier .php qui va contenir le html de votre
page. L'idée est d'appeler la vue depuis le contrôleur afin de lui envoyer des
données préalablement récupérées. La vue se chargera d'intégrer ces
données dans le format HTML classique.
Comme en PHP, il est possible d'imbriquer (include) les vues entre elles.
L'idée étant bien sûr d'éviter au maximum la redondance.
Charger une vue
Comme nous l’avons vu précedement, l’affichage d’une vue est assez simple,
une seule ligne suffit dans le contrôleur.
$this->load->view('welcome_message');
27
3. Les vues
Envoyer les données à la vue
La fonction view() prend d'autres paramètres. Comme nous l'avons vu, le
premier est le nom de la vue. Le deuxième est un tableau qui va contenir les
données que nous allons envoyer à la vue.
Reprenons notre exemple de tout à l’heure
Nous voyons que nous passons un tableau associatif à la vue. Ce faisant, il est
maintenant très simple de récupérer les données dans la vue (fichier
profil.php) en faisant :
class Utilisateur extends CI_Controller {
public function profil() {
$data = array('nom' => 'Robert');
$this->load->view('utilisateur/profil', $data);
}
}
echo $nom; // ceci affichera "Robert"
Et oui ! La clé du tableau devient le nom de la variable. C'est aussi simple que ça.
28
3. Les vues
Stocker la vue dans une variable
La fonction view() prend également un troisième paramètre très
intéressant. Si vous le mettez à true, la vue ne s'affichera pas
directement, elle sera retournée. Cela signifie que vous pourrez stocker
le contenu de la vue dans une variable.
Tout d'abord, il faut créer une vue template.php à la racine du dossier
views et insérez y le code suivant :
$html = $this->load->view('utilisateur/profil', $data, true);
Créer un système de template avec CodeIgniter
Avec tout ceci, nous allons pouvoir créer un système de template. Sur
un site Internet, il y a toujours des parties qui sont identiques pour
chaque page (header et footer notamment). Nous pouvons facilement
créer un système permettant de gérer cela.
29
3. Les vues
<html>
<head>
<title>Ma page</title>
</head>
<body>
<header>Ceci est le header</header>
<div>
<!-- La vue s'affichera ici -->
<?php echo $page; ?>
</div>
<footer>Ceci est le footer</footer>
</body>
</html>
Ce sera toujours cette vue que l'on appellera. Lors de cel appel, il nous
suffira de lui passer en paramètre le contenu d'une autre vue que l'on
aura instanciée dans la variable $page. Le contrôleur ressemblera donc
à ceci :
30
3. Les vues
class Utilisateur extends CI_Controller {
public function profil() {
$data = array('nom' => 'Robert');
// On stocke notre page dans la variable $page
$page = $this->load->view('utilisateur/profil', $data, true);
// On affiche notre page avec le template
$this->load->view('template', array('page' => $page));
}
}
Bien sûr vous pouvez facilement adapter un tel système à vos besoins
et y ajouter quelques fonctionnalités plus robuste.
Les contrôleurs représentent le cœur de votre application. Ils
vont faire le lien entre les données et l'affichage. Ils seront la
"logique" de votre application.
31
3. Les modèles
Fonctionnement des contrôleurs
Dans le dossier controllers vous trouverez un fichier welcome.php, ouvrez le. Plusieurs
choses nous intéresse :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function index() {
$this->load->view('welcome_message');
}
}
Wo, wo, wo du calme on y va maintenant
32
Tchai djo, c’est pour quand la pratique ?
https://github.com/fkobon/codons-j2code
CONCLUSION
CodeIgniter, est un f ramework facile à apprendre, qui
permet de gagner beaucoup de temps et de garantir la
sécurité de vos applications web
‣ Un Framework peu s’avéver très utile,
‣ Diversité de Framwork disponible
‣ Bien choisir son f ramework en fonction de ses
besoins et du type de projet
Merci !
Suivez-moi sur @fkobon sinon laissez-moi un petit mail, je me
ferai le plaisir de vous répondre francois.kobon@ayiyikoh.org.
En passant, mon fkobon.ci et laissez-moi quelques commentaires.
Journée du Code 2018
#MaintenantCodons