Choisir un Framework PHP pour développer des sites web peut vous faire gagner des efforts et du temps. Je ne désire pas écrire ici une liste exhaustive des avantages et inconvénients des différents frameworks PHP disponibles mais veut simplement mettre en évidence pourquoi je crois qu’ils valent la peine qu’on les essaie.
Dans mon cas personnel, le choix d’un framework PHP m’a aussi aidé à acquérir une meilleure pratique de programmation.
Le framework avec lequel j’ai développé plusieurs projets Web est Code Igniter (v.1.7.2). J’ai aussi approché Kohana3 (pour le plaisir) parce que je cherchais un framework léger et PHP5 strict. Je n’ai pas approfondi Zend Framework parce qu’il m’a l’air un peu lourd et je cherche un système plus léger. Cela dit, produit développé par Zend Technologies Ltd., il est également une référence dans le domaine des Frameworks PHP.
Si vous ne vous êtes jamais frotté à un framework PHP et être prêt à jeter un oeil à oeil en quelques minutes, visionnez un des tutoriels vidéos officiels sur http://codeigniter.com/tutorials/ : absolument convaincant!
Au départ, j’étais assez frileux de choisir un framework et préférais coder mes propres scripts parce que je pensais qu’un framework me forcerais à utiliser une pratique de programmation que je pourrais regretter ultérieurement (utiliser des règles de programmation propres au framework, efficacité à long terme,…). Tel était mon état d’esprit avant d’en avoir essayé un.
Après ma première expérience avec Code Igniter, j’ai changé d’avis et pense désormais que les framework nous facilitent la vie. Et même si le framework que j’ai choisi n’était plus développé, je pourrais aisément en choisir un autre pour développer mes sites web sans devoir révolutionner ma pratique.
Selon moi, ce qui rend un framework crédible, efficace est :
- un framework PHP5
- une architecture MVC (Modèle-Vue-Contrôler)
- un lot de helpers (scripts qui vous font gagner du temps car ils contiennent des classes pour gérer les urls ou les éléments de formulaire, par exemple)
- la possibilité de scripter vos propres contrôleurs, vos propres bibliothèques de classes, vos propres helpers
- une pratique bien documentée (off- et/ou online)
- un système léger (donc au chargement rapide)
Tout est une question de puissance…
PHP5-powered
La puissance de framework PHP5 comme Kohana est qu’ils sont strictement OOP (Object Oriented Programming), signe d’une meilleure pratique de programmation. Code Igniter est partiellement écrit en PHP5 OOP, les helpers n’incluent pour l’instant que des fonctions PHP4.
MVC-powered
Une architecture MVC vous permet de structurer votre code : vos scripts PHP ne sont plus mêlés à votre HTML et vos requêtes MySql comme ils l’étaient dans des scripts faits maison sans framework. Dans une architecture MVC, vous pouvez définir des répertoires spécifiques qui contiendront vos classes de contrôleurs, vos classes de modèles et vos vues. Pratiquement parlant, une page Web appellera un contrôleur. Ce contrôleur peut définir des variables, appeler un modèle qui se connectera à la base de données pour en extraire des données, par exemple. Donc, le modèle exécute une requête MySql, obtient les données de la base de données et renvoie le résultat au contrôleur. Le contrôleur passera ensuite les résultats à la vue qui est comme un template HTML.
MY_Controller.php : écrire vos propres contrôleurs
Un Framework PHP vous laisse scripter vos propres contrôleurs. Dans Code Igniter, le contrôleur principal se trouve dans /system/libraries/Controller.php. Pour utiliser votre propre contrôleur, créez un fichier dans /system/application/libraries/MY_Controller.php. Ce fichier contient une classe MY_Controller qui étend le contrôleur principal :
<?php if ( ! defined(‘BASEPATH’)) exit(‘No direct script access allowed’);class MY_Controller extends Controller {public function __construct() {parent::__construct();$this->load->helper(array(‘my_html’,'my_url’,'my_date’));}}?>
Mon contrôleur personnel charge le constructeur du contrôleur principal puis charge quelques helpers. Ces helpeurs ne sont pas les helpers par défaut de Code Igniter qui se trouvent dans /system/helpers/ mais mes propres helpers réécrits : my_html_helper.php, my_url_helper.php et my_date_helper.php qui sont des copies des helpers originaux auxquels j’ai ajouté quelques fonctions personnelles.
Développer des sites Web avec Code Igniter m’a permis d’écrire des scripts très courts, faciles à mettre à jour et redoutablement efficaces.