Aller au contenu principal
Version: 5.x

👨🏽‍💻 Concept et Architecture

Comprendre le cycle de vie d'une requête dans BowPHP​

BowPHP est un framework PHP léger, conçu pour offrir une structure claire et modulaire. Lorsqu'une requête arrive, elle suit un chemin bien défini appelé cycle de vie d'une requête. Ce cycle est organisé pour séparer les responsabilités, rendre le code facile à maintenir et améliorer les performances.

Le cycle de vie d'une requête expliqué​

Chaque requête passe par plusieurs étapes avant de générer une réponse pour l'utilisateur.

Voici les Ă©tapes principales :

  1. RequĂŞte HTTP : L'utilisateur envoie une requĂŞte via son navigateur ou une API.
  2. Request : Le framework capture cette requête et extrait les données nécessaires (URL, paramètres, corps, etc.).
  3. Kernel : Le Kernel est le cœur du framework. Il :
  • Charge les fichiers de configuration situĂ©s dans le dossier config (comme config/database.php).
  • Initialise les modules nĂ©cessaires Ă  l'application.
  1. Application : Elle démarre le Kernel et prépare l'environnement pour traiter la requête.
  2. Routeur :
  • Le routeur dĂ©tecte la route correspondant Ă  la requĂŞte (par exemple, /users/42 ou /api/login).
  • Il associe cette route Ă  un contrĂ´leur et une mĂ©thode spĂ©cifique, dĂ©finis directement dans le code des routes.
  • Si des middlewares sont dĂ©finis pour cette route, ils sont exĂ©cutĂ©s avant d'appeler le contrĂ´leur.
  1. Middleware : Les middlewares effectuent des traitements spécifiques, comme vérifier l'authentification ou valider les données.
  2. Contrôleur : Une fois la route validée, le contrôleur exécute la logique métier (par exemple, récupérer des données ou effectuer une action).
  3. Modèle : Si des données sont nécessaires, le modèle interagit avec la base de données pour les récupérer ou les mettre à jour.
  4. Vue : Le contrôleur renvoie les données récupérées au composant Vue, qui génère le contenu final (HTML, JSON, etc.).
  5. Réponse HTTP : La réponse est envoyée à l'utilisateur.

Le rôle du routeur en détail​

Le routeur est un composant clé de BowPHP. Il agit comme une "boussole" qui oriente chaque requête vers le bon contrôleur et la bonne méthode.

Détection de la route​

Le routeur examine l'URL de la requête et détermine quelle route correspond. Les routes sont définies dans des fichiers dédiés.

Exemple de définition de route :

routes/app.php
$app->get('/users/{id}', 'UserController@show');
$app->post('/api/login', 'AuthController@login');
remarque

Ici : La requête GET /users/42 est associée à la méthode show du contrôleur UserController. La requête POST /api/login est associée à la méthode login du contrôleur AuthController.

Association au contrôleur​

Une fois la route détectée, le routeur :

  • Valide les paramètres de l'URL (comme {id}).
  • ExĂ©cute les middlewares dĂ©finis pour cette route (s'il y en a).
  • Appelle le contrĂ´leur et la mĂ©thode associĂ©s Ă  la route.

Une architecture modulaire​

BowPHP repose sur une architecture modulaire. Chaque module est indépendant, possédant sa propre configuration et remplit un rôle spécifique. Cela rend l'application facile à gérer et à étendre. Le routeur est un exemple de cette approche modulaire. Un autre exemple est le module Database, qui gère les connexions à la base de données.

Exemple : Le module Database​

Prenons le cas du module Database, qui gère les connexions à la base de données :

Fichier de configuration : config/database.php

Ce fichier contient les paramètres nécessaires pour se connecter à la base de données. Voici un exemple simple :

config/database.php
return [
'default' => 'mysql',
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'bowphp_app',
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
],
],
];

Classe Bow\Database\DatabaseConfiguration​

Cette classe est chargée de lire les paramètres du fichier config/database.php et d'établir une connexion à la base de données.

Rôle du Kernel​

Au démarrage, le Kernel charge le fichier config/database.php à l'aide de DatabaseConfiguration défini dans app/Kernel.php et initialise une connexion à la base de données, prête à être utilisée par d'autres composants.

Visualisation avec un diagramme​

Voici une représentation visuelle pour mieux comprendre le cycle de vie d'une requête et l'intégration modulaire (exemple avec Database) : Charge les configurations

Voici un diagramme mis à jour, mettant en évidence le rôle du routeur et l'intégration modulaire (exemple avec Database)

Résumé des points importants​

  • Cycle de vie structurĂ© : Une requĂŞte suit un chemin prĂ©cis (Request → Kernel → Routeur → Middleware → ContrĂ´leur → Modèle → Vue → RĂ©ponse).
  • RĂ´le du routeur : Le routeur dĂ©tecte la route correspondant Ă  la requĂŞte et appelle le contrĂ´leur et la mĂ©thode associĂ©s.
  • Kernel : Orchestre le chargement des configurations depuis le dossier config et initialise les modules.
  • ModularitĂ© : Chaque composant (routeur, base de donnĂ©es, etc.) est indĂ©pendant, ce qui simplifie la gestion et amĂ©liore la maintenabilitĂ©.

Contributing​

Merci d'avoir envisagé de contribuer à Bow Framework ! Le guide de contribution se trouve dans la documentation.

S'il vous plaît, s'il y a un bogue sur le projet s'il vous plaît contactez-moi par courriel ou laissez-moi un message sur slack ou rejoignez-nous sur slack

Il manque quelque chose ?

Si vous rencontrez des problèmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.