diff --git a/docs/concept.mdx b/docs/concept.mdx
index ec3b34f..60d4341 100644
--- a/docs/concept.mdx
+++ b/docs/concept.mdx
@@ -6,34 +6,132 @@ title: "đšđœâđ» Concept et Architecture"
import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
import BugReportFeature from "@site/src/components/Partials/BugReportFeature";
-# Bow Framework
+## 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.
-Bow est un framework PHP, Ă©crit par **[Franck DAKIA](http://github.com/papac)** et autres contributeurs.
+### Le cycle de vie d'une requĂȘte expliquĂ©
-L'objectif est de permettre aux débutants qui souhaitent travailler sur un plus large projet et comprendre le fonctionnement du **développement collaboratif** de s'y mettre avec aisance et faire de ce framework une référence dans la communauté PHP.
+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.
+4. **Application** : Elle dĂ©marre le Kernel et prĂ©pare l'environnement pour traiter la requĂȘte.
+5. **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.
+6. **Middleware** : Les middlewares effectuent des traitements spécifiques, comme vérifier l'authentification ou valider les données.
+7. **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).
+8. **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.
+9. **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.).
+10. **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 (souvent routes/web.php ou routes/api.php).
+
+Exemple de définition de route :
+
+```php
+$app->get('/users/{id}', 'UserController@show');
+$app->post('/api/login', 'AuthController@login');
+```
+
+:::note
+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 :
+
+```php title="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)
```mermaid
-graph TD
- A[RequĂȘte HTTP] -->|EntrĂ©e utilisateur| B[Routeur]
- B -->|Associe une route| C[ContrĂŽleur]
- C -->|Appelle la logique métier| D[ModÚle]
- D -->|Interaction| E[(Base de données)]
- C -->|Retourne des données| F[Vue]
- F -->|GénÚre la réponse HTML| G[Réponse HTTP]
+graph TB
+ A[RequĂȘte HTTP] -->|EntrĂ©e utilisateur| B[Request]
+ B -->|Passe la requĂȘte| C[Kernel]
+ C -->|Charge les modules| D[Routeur]
+ D -->|VĂ©rifie la route et
appelle le contrĂŽleur| E[Middleware]
+ E -->|Valide la requĂȘte
et continue| F[ContrĂŽleur]
+ F -->|Exécute la logique métier| G[ModÚle]
+ G -->|Interaction avec| H[(Base de données)]
+ F -->|Retourne les données| I[Vue]
+ I -->|GénÚre la réponse HTML/JSON| J[Réponse HTTP]
subgraph Framework BowPHP
- B
C
D
+ E
F
+ G
+ I
end
```
+### 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.
@@ -41,10 +139,5 @@ Merci d'avoir envisagé de contribuer à Bow Framework ! Le guide de contributio
- [Franck DAKIA](https://github.com/papac)
- [Merci aux collaborateurs](https://github.com/bowphp/app/graphs/contributors)
-## Contact
-
-- [Franck DAKIA](https://github.com/papac)
-- [Thanks collaborators](https://github.com/bowphp/docs/graphs/contributors)
-
diff --git a/docs/service.mdx b/docs/service.mdx
index 86a67a7..9950a59 100644
--- a/docs/service.mdx
+++ b/docs/service.mdx
@@ -7,12 +7,12 @@ import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
# Service
-Les services sont des classes simple qui vous voulez injectées dans vos Controllers, dans d'autre services que peuvent nous permettre de découpler les logiquees et donc optimisé votre code source.
-Vous pouvez aussi injectées des modÚles dans vos services.
+Les services sont des classes simples qui vous veulent injecter dans vos Controllers, dans d'autres services que peuvent nous permettre de découpler la logique et donc optimisé votre code source.
+Vous pouvez aussi injecter des modĂšles dans vos services.
## Utilisation
-Pour ajouter un service rien de plus simple que d'untilisé la commande suivante :
+Pour ajouter un service rien de plus simple que d'utilisé la commande suivante :
```bash
php bow add:service UserService
@@ -36,7 +36,7 @@ class UserService
## Utilisation du service
-Pour utiliser le service nous allons l'inject lĂ ou nous voulons l'utiliser, dans notre cas dans un controller.
+Pour utiliser le service, nous allons inject lĂ ou nous voulons l'utiliser, dans notre cas dans un controller.
Lancer la commande suivante pour créer un nouveau controller
@@ -44,7 +44,7 @@ Lancer la commande suivante pour créer un nouveau controller
php bow add:controller UserController
```
-Dans le controleur nous allons maintenant injecter le service:
+Dans le controller, nous allons maintenant injecter le service :
```php
class UserController extends Controller
diff --git a/docs/structure.mdx b/docs/structure.mdx
index 2ec7a9a..d11fe9f 100644
--- a/docs/structure.mdx
+++ b/docs/structure.mdx
@@ -42,7 +42,7 @@ Ici, vous retrouverez les dossiers suivants :
- __Events__ : Dossier dans lequel sera sauvegardé les events générés par Bow Console.
- __Models__ : Dossier dans lequel sera sauvegardés les modÚles de l'application.
- __Validations__ : Dossier dans lequel sera sauvegardées les validations de l'application.
-- __Exceptions__ : Dossier dans lequel sera sauvegardées les exceptions personnalisés de l'application.
+- __Exceptions__ : Dossier dans lequel sera sauvegardées les exceptions personnalisées de l'application.
- __Services__ : Dossier dans lequel sera sauvegardés les services générés par Bow Console.
- __Producers__ : Dossier dans lequel sera sauvegardés les producers générés par Bow Console.
- __Commandes__ : Dossier dans lequel sera sauvegardées les commandes générées par Bow Console.
@@ -54,7 +54,7 @@ Vous trouverez aussi les fichiers suivants :
## Dossier frontend
-C'est là que vous allez insérer tous les fichiers qui sont utilisés dans les vues de votre application. Vous y retrouverez les dossiers suivant:
+C'est là que vous allez insérer tous les fichiers qui sont utilisés dans les vues de votre application. Vous y retrouverez les dossiers suivants :
- __js__: Votre fichier `Javascript` seront sauvegardés ici.
- __sass__: Votre ficher scss seront sauvegardés ici.
@@ -68,19 +68,12 @@ C'est là que vous allez insérer tous les fichiers qui sont utilisés dans les
## Dossier var
-Ici, Bow va stocker les fichiers de log et le cache de votre application. Vous y retrouverez les dossiers suivant:
+Ici, Bow va stocker les fichiers de log et le cache de votre application. Vous y retrouverez les dossiers suivants :
-- __storage__: Dossier dans lequel l'application sauvegarde les fichiers téléchargé de l'application
+- __storage__: Dossier dans lequel l'application sauvegarde les fichiers téléchargés de l'application
- __logs__: Dossier dans lequel est sauvegardés les logs de l'application.
- __session__: Dossier dans lequel est sauvegardés les fichiers de session de l'application.
- __cache__: Dossier dans lequel l'application sauvegarde les caches de l'application
- __view__: Dossier dans lequel l'application sauvegarde le cache de compilation des vues
-## Dossier tests
-
-Ici, vous allez stocker vos fichiers de test unity. Et par souci de bien faire, nous avons :
-
-- __Http__: Vos sauvegarder vos fichiers de test Http seront ici
-- __Unity__: Vos fichiers de test Unity seront ici
-
diff --git a/docs/upload.mdx b/docs/upload.mdx
index a339362..e3d50e7 100644
--- a/docs/upload.mdx
+++ b/docs/upload.mdx
@@ -8,14 +8,14 @@ import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
- [Traiter les fichiers envoyés](#traiter-les-fichiers-envoyés)
- [Determiner si un fichier existe](#determiner-si-un-fichier-existe)
- [Validation des téléchargements réussis](#validation-des-téléchargements-réussis)
-- [Savegarder le fichier](#savegarder-le-fichier)
+- [Sauvegarder le fichier](#savegarder-le-fichier)
- [Il manque quelque chose ?](#il-manque-quelque-chose-)
## Traiter les fichiers envoyés
Souvent les requĂȘtes sont associĂ©s Ă des fichiers envoyĂ©s par l'utilisateur, vous pouvez traiter ces fichiers sur [`Bow\Http\Request`](https://bowphp.com/api/master/Bow/Http/Request.html) les mĂ©thodes `file` et le helper du mĂȘme nom.
-Considérons le formulaire suivant:
+Considérons le formulaire suivant :
```html
```
-Dans cette exemple, la méthode `file` retournera une [`Bow\Support\Collection`](https://bowphp.com/api/master/Bow/Support/Collection.html) qui contiendra pour chaque oruccencre une instance de [`Bow\Http\UploadFile`](https://bowphp.com/api/master/Bow/Http/UploadFile.html).
+Dans cet exemple, la méthode `file` retournera une [`Bow\Support\Collection`](https://bowphp.com/api/master/Bow/Support/Collection.html) qui contiendra pour chaque occurrence une instance de [`Bow\Http\UploadFile`](https://bowphp.com/api/master/Bow/Http/UploadFile.html).
```php
use Bow\Http\Request;
diff --git a/versioned_docs/version-4.x/concept.mdx b/versioned_docs/version-4.x/concept.mdx
index f53645f..60d4341 100644
--- a/versioned_docs/version-4.x/concept.mdx
+++ b/versioned_docs/version-4.x/concept.mdx
@@ -4,34 +4,140 @@ title: "đšđœâđ» Concept et Architecture"
---
import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
+import BugReportFeature from "@site/src/components/Partials/BugReportFeature";
-
+## Comprendre le cycle de vie dâune requĂȘte dans BowPHP
-## Bow Framework
+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Ă©
-Bow est un framework PHP, Ă©crit par **[Franck DAKIA](http://github.com/papac)** et autres contributeurs.
+Chaque requĂȘte passe par plusieurs Ă©tapes avant de gĂ©nĂ©rer une rĂ©ponse pour l'utilisateur.
-L'objectif est de permettre aux débutants qui souhaitent travailler sur un plus large projet et comprendre le fonctionnement du **développement collaboratif** de s'y mettre avec aisance et faire de ce framework une référence dans la communauté PHP.
+Voici les Ă©tapes principales :
-**Faites-vous une idée en commençant par la [documentation](https://bowphp.com).**
+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.
+4. **Application** : Elle dĂ©marre le Kernel et prĂ©pare l'environnement pour traiter la requĂȘte.
+5. **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.
+6. **Middleware** : Les middlewares effectuent des traitements spécifiques, comme vérifier l'authentification ou valider les données.
+7. **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).
+8. **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.
+9. **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.).
+10. **Réponse HTTP** : La réponse est envoyée à l'utilisateur.
-## Contributing
+### Le rÎle du routeur en détail
-Merci d'avoir envisagé de contribuer à Bow Framework! Le guide de contribution se trouve dans la documentation.
+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.
-- [Franck DAKIA](https://github.com/papac)
-- [Merci aux collaborateurs](https://github.com/bowphp/app/graphs/contributors)
+#### 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 (souvent routes/web.php ou routes/api.php).
-## Contact
+Exemple de définition de route :
-- [Franck DAKIA](https://github.com/papac)
-- [Thank's collaborators](https://github.com/bowphp/docs/graphs/contributors)
+```php
+$app->get('/users/{id}', 'UserController@show');
+$app->post('/api/login', 'AuthController@login');
+```
+
+:::note
+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 :
+
+```php title="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',
+ ],
+ ],
+];
+```
-**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](https://bowphp.slack.com) ou [rejoignez-nous sur slack](https://join.slack.com/t/bowphp/shared_invite/enQtNzMxOTQ0MTM2ODM5LTQ3MWQ3Mzc1NDFiNDYxMTAyNzBkNDJlMTgwNDJjM2QyMzA2YTk4NDYyN2NiMzM0YTZmNjU1YjBhNmJjZThiM2Q)**
+#### **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)
+
+```mermaid
+graph TB
+ A[RequĂȘte HTTP] -->|EntrĂ©e utilisateur| B[Request]
+ B -->|Passe la requĂȘte| C[Kernel]
+ C -->|Charge les modules| D[Routeur]
+ D -->|VĂ©rifie la route et
appelle le contrĂŽleur| E[Middleware]
+ E -->|Valide la requĂȘte
et continue| F[ContrĂŽleur]
+ F -->|Exécute la logique métier| G[ModÚle]
+ G -->|Interaction avec| H[(Base de données)]
+ F -->|Retourne les données| I[Vue]
+ I -->|GénÚre la réponse HTML/JSON| J[Réponse HTTP]
+
+ subgraph Framework BowPHP
+ C
+ D
+ E
+ F
+ G
+ I
+ end
+```
+
+### 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.
+
+- [Franck DAKIA](https://github.com/papac)
+- [Merci aux collaborateurs](https://github.com/bowphp/app/graphs/contributors)
+
diff --git a/versioned_docs/version-5.x/concept.mdx b/versioned_docs/version-5.x/concept.mdx
index 92be476..60d4341 100644
--- a/versioned_docs/version-5.x/concept.mdx
+++ b/versioned_docs/version-5.x/concept.mdx
@@ -6,18 +6,131 @@ title: "đšđœâđ» Concept et Architecture"
import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
import BugReportFeature from "@site/src/components/Partials/BugReportFeature";
-# Bow Framework
+## 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.
-Bow est un framework PHP, Ă©crit par **[Franck DAKIA](http://github.com/papac)** et autres contributeurs.
+### Le cycle de vie d'une requĂȘte expliquĂ©
-L'objectif est de permettre aux débutants qui souhaitent travailler sur un plus large projet et comprendre le fonctionnement du **développement collaboratif** de s'y mettre avec aisance et faire de ce framework une référence dans la communauté PHP.
+Chaque requĂȘte passe par plusieurs Ă©tapes avant de gĂ©nĂ©rer une rĂ©ponse pour l'utilisateur.
-**Faites-vous une idée en commençant par la [documentation](https://bowphp.com).**
+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.
+4. **Application** : Elle dĂ©marre le Kernel et prĂ©pare l'environnement pour traiter la requĂȘte.
+5. **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.
+6. **Middleware** : Les middlewares effectuent des traitements spécifiques, comme vérifier l'authentification ou valider les données.
+7. **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).
+8. **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.
+9. **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.).
+10. **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 (souvent routes/web.php ou routes/api.php).
+
+Exemple de définition de route :
+
+```php
+$app->get('/users/{id}', 'UserController@show');
+$app->post('/api/login', 'AuthController@login');
+```
+
+:::note
+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 :
+
+```php title="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)
+
+```mermaid
+graph TB
+ A[RequĂȘte HTTP] -->|EntrĂ©e utilisateur| B[Request]
+ B -->|Passe la requĂȘte| C[Kernel]
+ C -->|Charge les modules| D[Routeur]
+ D -->|VĂ©rifie la route et
appelle le contrĂŽleur| E[Middleware]
+ E -->|Valide la requĂȘte
et continue| F[ContrĂŽleur]
+ F -->|Exécute la logique métier| G[ModÚle]
+ G -->|Interaction avec| H[(Base de données)]
+ F -->|Retourne les données| I[Vue]
+ I -->|GénÚre la réponse HTML/JSON| J[Réponse HTTP]
+
+ subgraph Framework BowPHP
+ C
+ D
+ E
+ F
+ G
+ I
+ end
+```
+
+### 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
@@ -26,10 +139,5 @@ Merci d'avoir envisagé de contribuer à Bow Framework ! Le guide de contributio
- [Franck DAKIA](https://github.com/papac)
- [Merci aux collaborateurs](https://github.com/bowphp/app/graphs/contributors)
-## Contact
-
-- [Franck DAKIA](https://github.com/papac)
-- [Thanks collaborators](https://github.com/bowphp/docs/graphs/contributors)
-
diff --git a/versioned_docs/version-5.x/console.mdx b/versioned_docs/version-5.x/console.mdx
index bc725b1..4a6cfe3 100644
--- a/versioned_docs/version-5.x/console.mdx
+++ b/versioned_docs/version-5.x/console.mdx
@@ -1,6 +1,6 @@
---
id: console
-title: "đšđŸâđ» Bow Console"
+title: "đšđŸâđ» Console"
---
import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
diff --git a/versioned_docs/version-5.x/package.mdx b/versioned_docs/version-5.x/package.mdx
index bc4ced9..1b04470 100644
--- a/versioned_docs/version-5.x/package.mdx
+++ b/versioned_docs/version-5.x/package.mdx
@@ -1,6 +1,6 @@
---
id: package
-title: "đŠ Bow Package"
+title: "đŠ Package"
---
import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
diff --git a/versioned_docs/version-5.x/responses.mdx b/versioned_docs/version-5.x/responses.mdx
index a5bf277..f51284b 100644
--- a/versioned_docs/version-5.x/responses.mdx
+++ b/versioned_docs/version-5.x/responses.mdx
@@ -40,8 +40,7 @@ Tous les routes et contrÎleurs doivent retourner une réponse à renvoyer à l'
Une rĂ©ponse HTTP peut ĂȘtre une chaine de caractĂšre.
```php
-$app->get('/', function ()
-{
+$app->get('/', function () {
return "Hello, world";
});
```
@@ -51,18 +50,15 @@ $app->get('/', function ()
Une rĂ©ponse HTTP peut ĂȘtre une instance de [`Bow\Support\Collection`](https://bowphp.com/api/master/Bow/Support/Collection.html).
```php
-$app->get('/array', function ()
-{
+$app->get('/array', function () {
return [10, 2, 12, 'name' => 'Dakia'];
});
-$app->get('/collection', function ()
-{
+$app->get('/collection', function () {
return collect([10, 2, 12]);
});
-$app->get('/object', function ()
-{
+$app->get('/object', function () {
return (object) ['name' => 'Dakia'];
});
```
@@ -74,8 +70,7 @@ La rĂ©ponse HTTP peut ĂȘtre un `Model` ou une `Collection` de modĂšle, Bow la co
```php
use App\Models\User;
-$app->get('/', function ()
-{
+$app->get('/', function () {
$model = User::where('id', 1)->first();
return $model;
@@ -91,8 +86,7 @@ Il est trÚs important d'ajouter les codes d'erreurs à votre réponse HTTP si v
```php
use App\Models\User;
-$app->get('/', function ()
-{
+$app->get('/', function () {
$response = response();
return $response->status(400);
diff --git a/versioned_docs/version-5.x/service.mdx b/versioned_docs/version-5.x/service.mdx
index 2e9aea1..9950a59 100644
--- a/versioned_docs/version-5.x/service.mdx
+++ b/versioned_docs/version-5.x/service.mdx
@@ -5,14 +5,14 @@ title: "đą Approche Service"
import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
-## Service
+# Service
-Les services sont des classes simple qui vous voulez injectées dans vos Controllers, dans d'autre services que peuvent nous permettre de découpler les logiquees et donc optimisé votre code source.
-Vous pouvez aussi injectées des modÚles dans vos services.
+Les services sont des classes simples qui vous veulent injecter dans vos Controllers, dans d'autres services que peuvent nous permettre de découpler la logique et donc optimisé votre code source.
+Vous pouvez aussi injecter des modĂšles dans vos services.
## Utilisation
-Pour ajouter un service rien de plus simple que d'untilisé la commande suivante :
+Pour ajouter un service rien de plus simple que d'utilisé la commande suivante :
```bash
php bow add:service UserService
@@ -34,9 +34,9 @@ class UserService
}
```
-# Utilisation du service
+## Utilisation du service
-Pour utiliser le service nous allons l'inject lĂ ou nous voulons l'utiliser, dans notre cas dans un controller.
+Pour utiliser le service, nous allons inject lĂ ou nous voulons l'utiliser, dans notre cas dans un controller.
Lancer la commande suivante pour créer un nouveau controller
@@ -44,7 +44,7 @@ Lancer la commande suivante pour créer un nouveau controller
php bow add:controller UserController
```
-Dans le controleur nous allons maintenant injecter le service:
+Dans le controller, nous allons maintenant injecter le service :
```php
class UserController extends Controller
@@ -60,7 +60,6 @@ class UserController extends Controller
// do something
}
}
-
```
diff --git a/versioned_docs/version-5.x/soauth.mdx b/versioned_docs/version-5.x/soauth.mdx
index 75bf6f9..6f80239 100644
--- a/versioned_docs/version-5.x/soauth.mdx
+++ b/versioned_docs/version-5.x/soauth.mdx
@@ -5,15 +5,10 @@ title: "đ Soauth"
import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
-- [soauth](#soauth)
-- [A propos](#a-props)
-
-# Soauth
+- [Installation](#Installation)
+- []
Package d'authentification via les réseaux sociaux pour Bow Framework.
-
-## Ă propos
-
Ce package utilise le package [`thephpleague/oauth2-client`](https://github.com/thephpleague/oauth2-client) pour faire un wrapper.
Actuellement, il supporte le fournisseur suivant :
@@ -33,11 +28,11 @@ Pour installer ce paquet, vous devez utiliser [composer](https://getcomposer.org
composer require bowphp/soauth
```
-### Configuration
+## Configuration
AprÚs l'installation Dans votre fichier `.env.json`, vous devez définir les informations d'accÚs au fournisseur comme suit:
-#### Pour facebook
+### Configuration facebook
Vous pouvez créer la nouvelle application facebook à l'adresse [https://developers.facebook.com/fr](https://developers.facebook.com/fr).
@@ -47,7 +42,7 @@ FACEBOOK_CLIENT_SECRET=client_secret
FACEBOOK_REDIRECT_URI=redirect_uri
```
-#### Pour gitlab :
+### Configuration gitlab
```bash
GITLAB_CLIENT_ID=client_id
@@ -55,7 +50,7 @@ GITLAB_CLIENT_SECRET=client_secret
GITLAB_REDIRECT_URI=redirect_uri
```
-#### Pour github :
+### Configuration github
```bash
GITHUB_CLIENT_ID=client_id
@@ -63,9 +58,11 @@ GITHUB_CLIENT_SECRET=client_secret
GITHUB_REDIRECT_URI=redirect_uri
```
+> Ainsi de suite, la configuration des autres providers suivent la mĂȘme approche.
+
## Utilisation
-Pour utiliser le package, vous devez importer la configuration du package:
+Pour utiliser le package, vous devez importer la configuration du package :
```php
return [
@@ -77,9 +74,7 @@ return [
Nous considérons le contrÎleur suivant :
```php
-get('/oauth/:provider/redirect', 'SoauthController::redirect');
$app->get('/oauth/:provider/callback', 'SoauthController::handle');
```
diff --git a/versioned_docs/version-5.x/structure.mdx b/versioned_docs/version-5.x/structure.mdx
index 2ec7a9a..d11fe9f 100644
--- a/versioned_docs/version-5.x/structure.mdx
+++ b/versioned_docs/version-5.x/structure.mdx
@@ -42,7 +42,7 @@ Ici, vous retrouverez les dossiers suivants :
- __Events__ : Dossier dans lequel sera sauvegardé les events générés par Bow Console.
- __Models__ : Dossier dans lequel sera sauvegardés les modÚles de l'application.
- __Validations__ : Dossier dans lequel sera sauvegardées les validations de l'application.
-- __Exceptions__ : Dossier dans lequel sera sauvegardées les exceptions personnalisés de l'application.
+- __Exceptions__ : Dossier dans lequel sera sauvegardées les exceptions personnalisées de l'application.
- __Services__ : Dossier dans lequel sera sauvegardés les services générés par Bow Console.
- __Producers__ : Dossier dans lequel sera sauvegardés les producers générés par Bow Console.
- __Commandes__ : Dossier dans lequel sera sauvegardées les commandes générées par Bow Console.
@@ -54,7 +54,7 @@ Vous trouverez aussi les fichiers suivants :
## Dossier frontend
-C'est là que vous allez insérer tous les fichiers qui sont utilisés dans les vues de votre application. Vous y retrouverez les dossiers suivant:
+C'est là que vous allez insérer tous les fichiers qui sont utilisés dans les vues de votre application. Vous y retrouverez les dossiers suivants :
- __js__: Votre fichier `Javascript` seront sauvegardés ici.
- __sass__: Votre ficher scss seront sauvegardés ici.
@@ -68,19 +68,12 @@ C'est là que vous allez insérer tous les fichiers qui sont utilisés dans les
## Dossier var
-Ici, Bow va stocker les fichiers de log et le cache de votre application. Vous y retrouverez les dossiers suivant:
+Ici, Bow va stocker les fichiers de log et le cache de votre application. Vous y retrouverez les dossiers suivants :
-- __storage__: Dossier dans lequel l'application sauvegarde les fichiers téléchargé de l'application
+- __storage__: Dossier dans lequel l'application sauvegarde les fichiers téléchargés de l'application
- __logs__: Dossier dans lequel est sauvegardés les logs de l'application.
- __session__: Dossier dans lequel est sauvegardés les fichiers de session de l'application.
- __cache__: Dossier dans lequel l'application sauvegarde les caches de l'application
- __view__: Dossier dans lequel l'application sauvegarde le cache de compilation des vues
-## Dossier tests
-
-Ici, vous allez stocker vos fichiers de test unity. Et par souci de bien faire, nous avons :
-
-- __Http__: Vos sauvegarder vos fichiers de test Http seront ici
-- __Unity__: Vos fichiers de test Unity seront ici
-
diff --git a/versioned_docs/version-5.x/upload.mdx b/versioned_docs/version-5.x/upload.mdx
index a339362..e3d50e7 100644
--- a/versioned_docs/version-5.x/upload.mdx
+++ b/versioned_docs/version-5.x/upload.mdx
@@ -8,14 +8,14 @@ import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
- [Traiter les fichiers envoyés](#traiter-les-fichiers-envoyés)
- [Determiner si un fichier existe](#determiner-si-un-fichier-existe)
- [Validation des téléchargements réussis](#validation-des-téléchargements-réussis)
-- [Savegarder le fichier](#savegarder-le-fichier)
+- [Sauvegarder le fichier](#savegarder-le-fichier)
- [Il manque quelque chose ?](#il-manque-quelque-chose-)
## Traiter les fichiers envoyés
Souvent les requĂȘtes sont associĂ©s Ă des fichiers envoyĂ©s par l'utilisateur, vous pouvez traiter ces fichiers sur [`Bow\Http\Request`](https://bowphp.com/api/master/Bow/Http/Request.html) les mĂ©thodes `file` et le helper du mĂȘme nom.
-Considérons le formulaire suivant:
+Considérons le formulaire suivant :
```html
```
-Dans cette exemple, la méthode `file` retournera une [`Bow\Support\Collection`](https://bowphp.com/api/master/Bow/Support/Collection.html) qui contiendra pour chaque oruccencre une instance de [`Bow\Http\UploadFile`](https://bowphp.com/api/master/Bow/Http/UploadFile.html).
+Dans cet exemple, la méthode `file` retournera une [`Bow\Support\Collection`](https://bowphp.com/api/master/Bow/Support/Collection.html) qui contiendra pour chaque occurrence une instance de [`Bow\Http\UploadFile`](https://bowphp.com/api/master/Bow/Http/UploadFile.html).
```php
use Bow\Http\Request;
diff --git a/versioned_docs/version-5.x/what-is-new.mdx b/versioned_docs/version-5.x/what-is-new.mdx
deleted file mode 100644
index 76062ec..0000000
--- a/versioned_docs/version-5.x/what-is-new.mdx
+++ /dev/null
@@ -1,8 +0,0 @@
----
-id: what-is-new
-title: "đ Quoi de neuf"
----
-
-import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
-
-
diff --git a/versioned_sidebars/version-4.x-sidebars.json b/versioned_sidebars/version-4.x-sidebars.json
index afdc5b4..ceacd82 100644
--- a/versioned_sidebars/version-4.x-sidebars.json
+++ b/versioned_sidebars/version-4.x-sidebars.json
@@ -1,7 +1,7 @@
{
"docs": {
"DĂ©marrage": [
- "what-is-new",
+ "concept",
"installation",
"configuration",
"structure",
diff --git a/versioned_sidebars/version-5.x-sidebars.json b/versioned_sidebars/version-5.x-sidebars.json
index 3978428..53f9019 100644
--- a/versioned_sidebars/version-5.x-sidebars.json
+++ b/versioned_sidebars/version-5.x-sidebars.json
@@ -1,7 +1,7 @@
{
"docs": {
"DĂ©marrage": [
- "what-is-new",
+ "concept",
"installation",
"configuration",
"structure",