Pour ce premier billet, nous allons voir comment est conçu 42framework.
PHP 5.3
42framework utilise les fonctionnalités introduites avec la version 5.3 de PHP comme les namespaces et les closures (fonctions anonymes) par exemple.
HMVC
42framework est basé sur le HMVC.
Mais qu'est-ce donc ?
Pour mieux comprendre, il faut d'abord parler de MVC.
MVC
MVC signifie Model-View-Controller (Modèle-Vue-Contrôleur en français).
C'est une façon d'organiser son code, qui permet de séparer les différentes tâches que doit effectuer une application et ainsi, de simplifier le code et de pouvoir le réutiliser plus facilement.
Le code est ainsi organisé en 3 couches distinctes, que nous allons détailler.
- Modèle : c'est la couche métier de votre application. C'est elle qui va gérer la récupération et l'enregistrement des données. Elle prend donc en charge, par exemple, la connexion à la base de données. Elle sert d'interface d'accès aux données pour les autres couches. Celles-ci ne devrait donc pas avoir à se soucier de la provenance des données.
- Vue : c'est la couche présentation de votre application. C'est elle qui va se charger de formater les données pour l'affichage, que ce soit pour une page web, un mail, ou autre chose.
- Contrôleur : c'est la couche logique de votre application. C'est elle qui va exécuter les différentes actions nécessaires pour répondre à une requête précise. Elle sert de lien entre le modèle et la vue.
H pour Hierarchical
Le HMVC est une extension de MVC.
Si on le traduit, on obtient : Modèle-Vue-Contrôleur Hiérarchique.
Le principe ici, est d'avoir non plus 3 grosses couches dans notre application, mais plusieurs modules, ayant chacun leurs propres couches MVC. On obtient ainsi une multitude de "minis" applications, indépendantes (dans la mesure du possible) les unes des autres. Chaque module à une fonction bien définie. Par exemple, dans une application, on pourra avoir un module "users" qui gèrera tous ce qui est en rapport avec les utilisateurs (inscription, profil, authentification), puis un module "news", un module "forum", etc...
Avec le HMVC, il est encore plus simple de réutiliser son code !
Pour plus d'informations sur le HMVC, je vous conseille cet article : Scaling Web Applications with HMVC.
42framework
Dans tout cela, je n'ai toujours pas évoqué le rôle de 42framework...
Celui-ci va tout simplement servir de lien entre les différents modules. Il sera le ciment de votre application. C'est grâce à lui que vous pourrez faire communiquer vos modules entre eux, en leur permettant de se transmettre des informations.
Les filtres
42framework propose plusieurs niveaux de filtres pour votre application.
Qu'est-ce qu'un filtre ?
Un filtre est un morceau de code, exécuté avant, ou après, un point précis lors de l'exécution d'une requête. Par exemple, si vous souhaitez vérifier les paramètres d'une action donnée avant de l'exécuter, vous utiliserez un filtre.
Plusieurs niveaux de filtres
Avec 42framework, vous pourrez placer des filtres sur plusieurs points d'exécution.
- Tout d'abord, au niveau de l'application elle-même. Ces filtres ne seront exécuté qu'une seule fois par requête, au tout début et à la toute fin de l'exécution.
- Ensuite, au niveau des actions. Grâce à l'héritage, vous pourrez placer des filtres pour toutes les actions, un ensemble d'actions ou bien une action unique.
- Enfin, au niveau des vues. Vous pourrez placer des filtres exécutés au moment du rendu des vues.
Ces 3 niveaux de filtres seront disponibles dès la version 0.7 du framework. Un autre niveau de filtre sera également ajouté sur les modèles avec la version 0.8.
Les évènements
42framework propose un système de gestion d'évènements, qui vous permettra de faire réagir votre application lors d'évènements que vous aurez définis. Par exemple, vous pourrez faire en sorte qu'un ensemble d'actions soit exécuté à chaque fois qu'un nouvel utilisateur s'inscrit, et ce, sans surcharger le code de l'action d'inscription.
Voilà, j'espère que j'ai éveillé votre curiosité avec ces fonctionnalités. Les prochains articles traiteront plus en détail chacune de ses fonctionnalités, avec des codes d'exemple pour vous montrer comment les utiliser avec 42framework. D'ici là, surveillez le blog, pour vous tenir informé des prochaines mises à jour !