il faut au prealable avoir dejà les posts suivant:
1=> Documentation tecnique backen/Backoffice/API REST c'est ici
2 => Documentation technique Flutter + Reactjs c'est ici
3=> Fonctionalité QuizCodeur c'est ici
Qu'est ce que codeigniter et comment fonctionne t'il ?
Codeigniter est un framework PHP basé sur une architecture MVC(Model-View-Controler) au meme titre que laravel et symfony mais à la difference que codeigniter est plus simple, digeste et devrait etre le framework par excellence pour tout debutant PHP qui , après avoir fait ses premiers pas en php, puis a successivement apris la OOP(Object Oriented Programming) ou POO (Programmation Orienté Objet) et veut faire un pas géant dans les framework pour mieux coder et organiser son code. Les frameworks ne sont pas une obligation loin de là mais en coding on evite au maximum de réinventer la roue (don't reinvented the wheel en anglais), c'est pourquoi les acteurs et auteurs des frameworks qui sont des developpeurs/codeurs comme vous et moi, regroupe ce qu'il y a de mieux dans le framwork pour non seulement faciler le developpement, mais aussi implementer dans le framework les choses comunes donc le developpeur à besoin chaque jour pour son travail, en plus les framework generalement respecte des Design Pattern et des architectures qui n'est generalement pas à la porté de tout le monde et du coup permet au developpeur d'ecrire indirectement un code qualité.
A quoi sert le MVC ?
Beaucoup font de cette parole MVC un mystère pourtant c'est simple à comprendre et le principe est le meme quelque soit le langage, la technologie ou le framework tous partent exactement du meme principe pour implementer l'architecture MVC, en fait dans une application web basée sur le modele MVC comme codeigniter, lorsque l'utlisateur fait une requete HTTP au serveur (par utilisateur j'entend ici le navigateur de l'utilisateur), cette requete qui est un lien donc une URL et qu'on appelle route dans les framework MVC(on en parlera dans ce post), atterit sur une classe du framework qu'on appelle Controler (comme en image), cette classe est généralement definit par le developpeur et doit etre derivée d'une classe de base mis à disposition par le framework qui contient dejà des methodes pour faciliter la mise sur pied du mechanisme MVC. Le controler a pour role de faire comuniquer ce qu'on appelle un Model qui est une autre classe qui en fait represente les données que vous voulez manipuler et faire voir à l'utilisateur et la View qui peut etre une autre classe ou simplement du HTML dans le cas du web.
Architecture MVC de CodeIgniter en detaille.
Quand une requete arrive à une application php basée sur codeigniter, elle atterit sur la page index.php, dans l'application Backend QuizCodeur, vous l'avez comme en image:
Dans l'etape 2, le moteur du framework codeigniter doit trouver sur quel controleur il doit aiguiller pour gerer cette requete, pour le faire, presque tous les framwork introudisent un mechanisme dit de ROUTE ou ROUTING, generalement presque tous ses framework ont aussi un mechanisme de caching c'est à dire s'ils connaissent dejà une route qui se trouve dans le cache (en mémoire), ils vont directement servire la requete à partir de la page qu'ils ont en mémoire, d'ou le 2 vers le 3 là en image, si non le framework lit son fichier de routing pour decouvrir quel controlleur appellé, codeigniter lit donc son fichier de routing qui se trouve dans "Application/config/route.php" comme en image, qui definit ce fichier? quand vous installez codeigniter ou bien quand vous le telechargez, ce fichier existe dejà avec une route defaut, mais vous devez le remplir avec toutes vos routes, une route indique le controleur et la methode de la classe du controleur qu'on doit appellé pour servire la requete
Prenons un example très simple sur le fichier de routing du backend QuizCodeur en image, quand l'utilisateur ouvre l'application pour la première fois, si vous etes dans wamp par exemple et votre code dans www se trouve dans un repertoire appellé QuizCodeur alors quand vous lancez l'application dans WAMP vous y accedez par le lien suivant : http://localhost/QuizCodeur donc pour codeigniter la route c'est /QuizCodeur/, il lit son fichier route.php et constate que la route demandé à la route de base donc de default alors il lance ceci:
NB avant d'activer le controller qui doit gerer la requetes il applique son moteur de securité pour eviter les attaques (4 en image), donc "Login" en fait ici specifie à codeigniter qu'il doit creer un objet de la classe Login, une classe qui se trouve dans le repertoire "application/controler/" qui est le repertoire des controleurs, comme vous voyez en image ci dessous, cette classe herite (heritage en POO) d'une classe de base de codeginiter CI_Controller qui est la classe que tous les Controlleur dans le modele MVC de codeigniter doivent implementer ou herediter, donc Login est une classe crée par moi le developpeur qui derive de la classe de base de Codeigniter et qui contient des methodes (ce qu'on appelle endpoint dans les API REST) qui en fait sont les routes que le navigateur(utilisateur) appelle comme requetes et qui ont la logique pour construire une reponse de cette requete, dans ce cas la route de defaut appelle la methode index de la classe login car on a rien specifié comme endpoint et cette methode index fait 2 choses, si on a dejà ete authentifie, il nous renvois vers le dashbord si non ver la page de login.
Avec cette explication, pour tous les developpeurs qui font partir de l'equipe backend PHP, ils pourront comprendre facilement que fait quelle route dans route.php et quel controleur il appelle et quelle methode fait telle ou telle chose.
Le controlleur justement le plus souvent doit à son tour instancié des modeles, les modeles en fait ce sont les données qui nous proviennent de la BDD, dans codeigniter, tous les modeles se trouvent dans un repertoire "application/model" comme en image ou je vous faire voir le model qui contient les questions de QuizCodeur qui s'appelle Question_model et qui doit forcement herité de la classe de base CI_Model de codeigniter, car cette classe de base a dejà des bibilotèque qui permet de manipuler d'une extremité irritante la base de donnée sans ecrire des query extravagant comme en vanilla PHP, voilà l'une des grosses utilité des framework
reguardez par exemple la methode add_daily_quiz de ce model
reguarder comment il est facile de faire une query pour recuperer les donnèes de la table "tbl_daily_quiz" dans la BDD en utilisant les objets mis sur pieds par codeigniter
reguardez comment il est facile de faire une mise à jour d'une donnée dans la BDD c'est à dire faire un update.
et reguardez enfin comment c'est hyper simple faire une insertion de donnée dans la BDD
ce model est ensuite utilisé dans le controleur des question pour recuperer les daily_quiz et le retourné à la VIEW qui est ce que l'utilisateur du Backoffice donc vous actuellement vouez dans la partie admin, dans l'image ci dessous, je vous presente le controlleur "Questions" ou vous avez les endpoints (methodes) pour la gestion des quiz quotidien(daily quiz)
vous verrez que dans ces endpoints, il y a utilisation du model $Quetion_model pour inserrer les données dans la base de données et ensuite appellé la View qui doit presenter le resultat à l'utilisateur dans l'interface graphique HTML, dans codeigniter les interface graphique HTML se trouve "Application/View" et chaque endpoint indique dans son return la view a appellé ainsi que les données qu'il doit passer à cette view pour presenter à l'utilisateur
Codeigniter n'est pas seulement cela, il a aussi des bibliothèque pour faire beaucoup de petites choses, comme envoyez un email, manipuler les URL etc.. qu'on peut charger dans son model, controleur etc.. pour faire sa logique et son algorithme.
Un API REST est un controleur qui expose des methodes donc des endpoints et tous les API REST consommé par les frontend Flutter et web reactjs se trouvent dans le repertoire "Application/Controlleur", mais à la difference des autres controlleurs, les API REST retourne du json et n'intancie pas des VIEW HTML.
Voilà en grande ligne les eclaircissements qu'il faut savoir sur MVC et codeigniter et j'esperes que cee post va plus vous eclaircir dans votre lecture sur le code backend de QuizCodeur, s'il y a des doutes, des clarifications, faites vos questions en commentaire et on en dsicute
Happy coding
LarrySig Guest
24.05.2024, 18:18
Post: Comment fonctionnent Internement les guichets automatiques ?
Orvilledop Guest
22.05.2024, 00:57
Post: Comment fonctionnent Internement les guichets automatiques ?
Orvilledop Guest
15.05.2024, 16:04
Post: Comment fonctionnent Internement les guichets automatiques ?
Franck Guest
14.05.2024, 19:34
Post: Comment deployer un site web statique sur github?