Développement

Pourquoi apprendre un framework PHP MVC

Par Guillaume , le 1 août 2014 , mis à jour le 2 décembre 2015 — 3 commentaires — 5 minutes de lecture

Bonjour à tous,
Dans cet article nous allons voir comment et pourquoi apprendre un framework PHP en MVC (Model View Controller).
Pour ma part ça fait un peu plus de un an que je ne code qu’avec ça, et je vais vous expliquer pourquoi.

Mais pour commencer nous allons voir qu’est qu’un framework et qu’est ce que le mvc.
Je ne vais pas m’étaler la dessus car ça n’est pas le but.

Un framework et une boite à outils pour développeur qui contient déja un gros lot de fonctionnalités (sécurisation de formulaire, classe de base de données simplifiée, authentification client,envoi de mails etc…), ils sont tous codés en orienté objet, il vaut mieux connaître le php objet avant de les utiliser. En utilisant un framework vous économisez un temps précieux (true story).

Ok pour ça à l’air cool ce que tu racontes mais c’est qui ton MVC la ?

Alors le MVC, est une structure divisée en 3 parties:
– M pour Model:
Le model permet de gérer les requêtes en base de données, session et tous ce qui traitent les données,
– V pour View:
Les view (vues en français) permettent d’afficher le contenu du sites
– et C pour Controller:
Le Controller permet de gérer le Model et la vue, il fait la transition entre les 2.

Comment ça marche ?
Nous allons prendre l’exemple de Codeigniter car c’est un des framework les plus simple à comprendre:
Dans codeigniter les url pointent sur des controller,
par exemple:

Dans ce controller intitulé Dashboard on peut voir une methode nommée index().
Cette methode dit: charge la vue dashboard.php

Jetons un oeil au code de la vue

Et lorsque que l’on va sur l’url => http://mon-site.com/index.php/dashboard/index ou http://mon-site.com/index.php/dashboard/ on tombe sur le résultat suivant:
2014-08-01_131829

on a bien le rendu de la vue.
Étudions l’url http://mon-site.com/index.php/dashboard/index
on peut voir qu’elle possède plusieurs parties:
– la première http://mon-site.com/index.php/ pointe sur votre site (le index.php est toujours présent codeigniter est fait comme ça)
– la 2ème dashboard est le nom de mon controller
– et la 3ème index le nom de ma methode (si c’est vide, le controller pointera par defaut sur index() )

enfait les urls sont faites de cette manière: URL / Controller / methode

Ok, donc jusqu’ici, c’est cool mais je vois pas trop à quoi ça sert, puis bon il faut bien charger des fichiers css, js, passer des données dans les vues et la je vois pas trop comment faire.

Pas de panique, avec un framework on peut tout faire.
Si je veux passer des données dans l’url comment par exemple l’id d’un article, très simple:
Par exemple dans un controller Site ou l’on souhaite voir les article en détails:

le tableau $data permet d’envoyer des données à la vue.
Modifions notre vue pour afficher les données:

maintenant si on va sur l’url http://mon-site.com/index.php/site/article/1:
2014-08-01_133147
on peux voir que le /1 et le paramètre $id de la methode, si vous en avez plusieurs, il surffit de les rajouter à la fin de l’url.
en le tableau envoyé à la vu est extrait et on peux utiliser les données directement dans la vue.

Je ne vais pas m’étaler la dessus, c’était juste un petit exemple pour vous montrer comment fonctionne un framework.

Ok, maintenant par ou commencer et lequel choisir ?

Il est vrai qu’il existe un tas de framework tous aussi bien les uns que les autres.
Pour ma part l’année dernière il a fallut que je m’y mette car il y avait beaucoup de demandes de developpement sur framework.
Après avoir survolé les plus connues comme Zend framework, Symfony 2, CakePhp et Codegniter, un seul à retenu mon attention, Codeigniter.

Codeigniter est léger, s’installe sur tous les hébergements (dédié ou mutu) et est très flexible.
De tous ceux que j’ai regardé c’est celui qui m’as bien fait comprendre le fonctionnement du MVC, sa syntaxe est simple et « parlante ».
C’est surtout quand j’ai vu dans la docs officielle comment utiliser la classe DB que mon choix s’est fait.
exemple:


voila en une ligne c’est fait, fini les requête SQL à ressortir en tableau, la il fait tout pour vous.
Et c’est a peu près comme ça pour tout, les sessions, les helpers etc…

Les frameworks possèdent ce qu’on appel des helpers, il vous permettent de vous aider à simplifier l’écriture, par exemple le helper URL vous fera des urls très rapidement est simplement.
Exemple:

ce code va vous retourner l’url de votre projet: http://mon-site.com/index.php
ou encore:
[cc lang= »php » width= »100% »]
// dans une vue

[/cc]
va vous retourner http://mon-site.com/index.php/dashboard/index.

De nos jours, les frameworks sont de plus en plus performant et ont de plus en plus de fonctionnalités.
Codeigniter commence à se faire vieux et j’ai du passer à autre chose.
Il y a peu de temps j’ai donc approfondi mes connaissances sur Cakephp, je trouve ce framework très puissant, il propose un système de layout (calques) bien foutu, mais j’ai eu du mal avec celui-ci,
je trouve qu’il est un peu trop strict à mon goûts, les jointures de base de données sont assez simple et compliquée à réaliser, beaucoup de model dépendent d’autre models. Ceci est mon avis et c’est pas pour autant que je vous le déconseille, il est très très bien fait, il possède un système de scaffolding (ajouter/supprimer/modifier des données sans créer de formulaire prévu) qui est juste génial, je vous conseille d’aller faire un tour sur le cookbook en français ou vous aurez pleins d’exemples.

Un autre framework qui a le vent en poupe, il s’agit de Laravel, ça fait une petite semaine que je code dessus et je dois dire que je suis vraiment séduit par ce dernier.
Comme CakePhp, Laravel possède un système de layout et en plus un moteur de template (Blade). Laravel est extrêmement flexible et puissant, ce que j’aime c’est qu’il puisse s’étendre très facilement, il est très geek grâce à artisan et composer. Le système de migration de données est juste fantastique !

Il me correspond parfaitement, au début on à tendance à s’emmêler les pinceaux avec les routes, filtres etc… mais on s’y habitue très vite et c’est extrement bien.
Il est sécurisé, on peux créer un systeme de login en quelques minutes gràce à sa classe Auth.
Pour ma part c’est mon nouveau chouchou, il a remplacé codeigniter. Pour la peine nous sommes en train de développer un ERP open source sous laravel (comming soon).

Bref, tout ça pour dire qu’il est fortement conseillé d’utiliser un framework où il y a une grande communauté si vous avez des questions, problèmes, certains vous aideront rapidement sur des forums dédiés, réseaux sociaux etc… Il en existe plusieurs, ne vous arrêtez pas à un seul, découvrez les, certains vous correspondront mieux que d’autres, vous gagnerez un temps fou dans votre développement ! Ne pensez pas qu’en utilisant un framework vous ne pourrez rien utilisez d’autre. Par exemple si vous souhaitez utiliser un classe particulière comme TCPDF, vous pourrez le faire très simplement.

Enjoy 😉

Guillaume

Commentaires

Le 8 octobre 2014 à 6 06 47 104710, Mika a dit :


N'hésitez pas à regarder plusieurs framework, certains sont plus simples que d'autres
des urls qui peuvent aider
http://www.grafikart.fr/blog/comparer-frameworks-mvc
et
http://socialcompare.com/fr/comparison/php-frameworks-comparison


Votre réponse sera révisée par les administrateurs si besoin.

Le 9 octobre 2014 à 16 04 51 105110, TranceGeniK a dit :


Bon article pour ceux qui hésitent encore à s'y mettre :)
Personnellement j'ai passé beaucoup trop de temps à réinventer la roue et laravel a changé ma vie donc n'hésitez plus!


Votre réponse sera révisée par les administrateurs si besoin.

Le 10 octobre 2014 à 7 07 45 104510, Guillaume a dit :


Pareil pour moi, j'ai commencé par CI car il m'a semblé très "parlant" dans la manière de faire, puis j'ai eu un petit époside CakePHP, mais j'ai pas trop accroché, et maintenant il y a laravel. C'est juste magnifique !


Votre réponse sera révisée par les administrateurs si besoin.

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.