SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Mettez du feu à vos application
web ave CodeIgniter
Journée du Code, ESATIC - 27 Octobre 2018
“
2
Êtes-vous prêt.e ?
#MaintenantCodons
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
Le Plan d’attaque
4
Introduction aux Frameworks
On code pas un peu ?
Pourquoi CodeIgniter ?
Conclusion
CodeIgniter (1/4)
Introduction aux Frameworks
‣ 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
4. Exemples
10
JavaScript PHP
Java
Python
Deep Learning
CodeIgniter (2/4)
Pourquoi CodeIgniter ?
‣ 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.
14
Framework mal léger
Pourquoi CodeIgnter ?
Solutions simples / complexité Documentation claire
Performance exceptionnelle Forte sécurité Zéro configuration (enfin presque)
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.
CodeIgniter (3/4)
On code pas un peu ?
Trêve de bavardage !
Ouvrez vos éditeurs à la page 2
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
CodeIgniter (4/4)
Conclusion
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

Contenu connexe

Tendances

Spring par la pratique chap-7 - mvc
Spring par la pratique  chap-7 - mvcSpring par la pratique  chap-7 - mvc
Spring par la pratique chap-7 - mvcFlorent Breton
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootDNG Consulting
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)DNG Consulting
 
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1Addi Ait-Mlouk
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les basesAntoine Rey
 
Android-Tp4: stockage
Android-Tp4: stockageAndroid-Tp4: stockage
Android-Tp4: stockageLilia Sfaxi
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflineDNG Consulting
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScriptKristen Le Liboux
 

Tendances (20)

Zf2 ce-qui-va-changer
Zf2 ce-qui-va-changerZf2 ce-qui-va-changer
Zf2 ce-qui-va-changer
 
Spring par la pratique chap-7 - mvc
Spring par la pratique  chap-7 - mvcSpring par la pratique  chap-7 - mvc
Spring par la pratique chap-7 - mvc
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)
 
Tuto spring
Tuto springTuto spring
Tuto spring
 
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Tutoriel J2EE
Tutoriel J2EETutoriel J2EE
Tutoriel J2EE
 
Hibernate et jsf
Hibernate et jsfHibernate et jsf
Hibernate et jsf
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Rapport tp3 j2ee
Rapport tp3 j2eeRapport tp3 j2ee
Rapport tp3 j2ee
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Spring
SpringSpring
Spring
 
mini projet
mini projetmini projet
mini projet
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Android-Tp4: stockage
Android-Tp4: stockageAndroid-Tp4: stockage
Android-Tp4: stockage
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScript
 

Similaire à #J2Code2018 - Mettez du feu à vos applications avec CodeIgniter

ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPKristen Le Liboux
 
Gestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzerGestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzerMohamet Lamine DIOP
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Nazih Heni
 
Atelier symfony n 2
Atelier symfony n 2Atelier symfony n 2
Atelier symfony n 2Amir Souissi
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv PsGregory Renard
 
Atelier hadoop-single-sign-on
Atelier hadoop-single-sign-onAtelier hadoop-single-sign-on
Atelier hadoop-single-sign-onsahar dridi
 
React redux-tutoriel-1
React redux-tutoriel-1React redux-tutoriel-1
React redux-tutoriel-1Sem Koto
 
React redux-tutoriel-1
React redux-tutoriel-1React redux-tutoriel-1
React redux-tutoriel-1Sem Koto
 
Solution d'OTA
Solution d'OTASolution d'OTA
Solution d'OTASidereo
 
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic LadeuXebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic LadeuPublicis Sapient Engineering
 
Cours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partieCours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partiekadzaki
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Alexandre Touret
 

Similaire à #J2Code2018 - Mettez du feu à vos applications avec CodeIgniter (20)

ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Framework php « Codeignitor »
Framework php « Codeignitor » Framework php « Codeignitor »
Framework php « Codeignitor »
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
iTunes Stats
iTunes StatsiTunes Stats
iTunes Stats
 
Introduction aspnet
Introduction aspnetIntroduction aspnet
Introduction aspnet
 
Gestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzerGestion des LOGS savec syslog+loganalyzer
Gestion des LOGS savec syslog+loganalyzer
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"Asp.net Tutorials de L'application "Organizer"
Asp.net Tutorials de L'application "Organizer"
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Atelier symfony n 2
Atelier symfony n 2Atelier symfony n 2
Atelier symfony n 2
 
[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
 
Atelier hadoop-single-sign-on
Atelier hadoop-single-sign-onAtelier hadoop-single-sign-on
Atelier hadoop-single-sign-on
 
React redux-tutoriel-1
React redux-tutoriel-1React redux-tutoriel-1
React redux-tutoriel-1
 
React redux-tutoriel-1
React redux-tutoriel-1React redux-tutoriel-1
React redux-tutoriel-1
 
Solution d'OTA
Solution d'OTASolution d'OTA
Solution d'OTA
 
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic LadeuXebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
 
Cours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partieCours php & Mysql - 5éme partie
Cours php & Mysql - 5éme partie
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 

Dernier

Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilfrizzole
 
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...Unidad de Espiritualidad Eudista
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneTxaruka
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfAtelier Canopé 37 - Tours
 
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RH
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RHM2i Webinar - CPF 2024 : une stratégie pour booster les performances RH
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RHM2i Formation
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAmar LAKEL, PhD
 
Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Majida Antonios, M.Ed.
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfAtelier Canopé 37 - Tours
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24BenotGeorges3
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfbdp12
 
0234567778999876554345678898765566.15.ppt
0234567778999876554345678898765566.15.ppt0234567778999876554345678898765566.15.ppt
0234567778999876554345678898765566.15.pptessiben
 

Dernier (12)

Calendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avrilCalendrier de la semaine du 8 au 12 avril
Calendrier de la semaine du 8 au 12 avril
 
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
L'Unité de Spiritualité Eudiste se joint à toute l'Église Universelle et en p...
 
Chana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienneChana Orloff.pptx Sculptrice franco-ukranienne
Chana Orloff.pptx Sculptrice franco-ukranienne
 
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdfBibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
Bibdoc 2024 - Sobriete numerique en bibliotheque et centre de documentation.pdf
 
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RH
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RHM2i Webinar - CPF 2024 : une stratégie pour booster les performances RH
M2i Webinar - CPF 2024 : une stratégie pour booster les performances RH
 
Aux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècleAux origines de la sociologie : du XIXème au début XX ème siècle
Aux origines de la sociologie : du XIXème au début XX ème siècle
 
Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-Copilot your everyday AI companion- OFFICE 365-
Copilot your everyday AI companion- OFFICE 365-
 
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdfBibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
Bibdoc 2024 - Les intelligences artificielles en bibliotheque.pdf
 
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
Newsletter SPW Agriculture en province du Luxembourg du 10-04-24
 
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdfLa Base unique départementale - Quel bilan, au bout de 5 ans .pdf
La Base unique départementale - Quel bilan, au bout de 5 ans .pdf
 
0234567778999876554345678898765566.15.ppt
0234567778999876554345678898765566.15.ppt0234567778999876554345678898765566.15.ppt
0234567778999876554345678898765566.15.ppt
 
Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024Bulletin des bibliotheques Burkina Faso mars 2024
Bulletin des bibliotheques Burkina Faso mars 2024
 

#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter

  • 1. Mettez du feu à vos application web ave CodeIgniter Journée du Code, ESATIC - 27 Octobre 2018
  • 3. 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
  • 4. Le Plan d’attaque 4 Introduction aux Frameworks On code pas un peu ? Pourquoi CodeIgniter ? Conclusion
  • 6. ‣ Un Framework, Kézako ? ‣ Fonctionnement du MVC ‣ Avantages / Inconvénients ‣ Exemples 6 Introduction aux Frameworks
  • 7. 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é).
  • 8. 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
  • 9. 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
  • 12. ‣ 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
  • 13. 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.
  • 14. 14 Framework mal léger Pourquoi CodeIgnter ? Solutions simples / complexité Documentation claire Performance exceptionnelle Forte sécurité Zéro configuration (enfin presque)
  • 15. 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. 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 ?
  • 17. 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.
  • 18. 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.
  • 19. 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
  • 20. 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.
  • 22. Trêve de bavardage ! Ouvrez vos éditeurs à la page 2
  • 23. 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. 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. 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. 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. 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. 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. 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. 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.
  • 31. 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'); } }
  • 32. Wo, wo, wo du calme on y va maintenant 32 Tchai djo, c’est pour quand la pratique ? https://github.com/fkobon/codons-j2code
  • 34. 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
  • 35. 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