Skip to content

Commit

Permalink
update 5.x docs
Browse files Browse the repository at this point in the history
  • Loading branch information
papac committed Jan 20, 2025
1 parent d213eec commit 1c1a4c1
Show file tree
Hide file tree
Showing 44 changed files with 1,350 additions and 660 deletions.
2 changes: 1 addition & 1 deletion docs/console.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: console
title: "👨🏾‍💻 Bow Console"
title: "👨🏾‍💻 Console"
---

import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
Expand Down
13 changes: 7 additions & 6 deletions docs/cqrs.mdx
Original file line number Diff line number Diff line change
@@ -1,27 +1,28 @@
---
id: cqrs
title: "🙅🏽‍♂️ CQRS"
title: "🤠 CQRS"
---

import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";

CQRS (ségrégation des responsabilités des requêtes de commande). C'est un modèle que j'ai entendu pour la première fois décrit par Greg Young.
Au cœur se trouve l’idée selon laquelle vous pouvez utiliser un modèle différent pour mettre à jour les informations que celui que vous utilisez pour lire les informations.
Dans certaines situations, cette séparation peut être utile, mais sachez que pour la plupart des systèmes, CQRS ajoute une complexité risquée.
**CQRS** (*ségrégation des responsabilités des requêtes de commande*).

Au cœur se trouve l'idée selon laquelle vous pouvez utiliser un modèle différent pour mettre à jour les informations que celui que vous utilisez pour lire les informations.
Dans certaines situations, cette séparation peut être utile, mais sachez que pour la plupart des systèmes, **CQRS** ajoute une complexité risquée.

[Pour plus d'information](https://www.martinfowler.com/bliki/CQRS.html)

## Install

Le package utilise php >= 8.1
Installez le package suivant:

```bash
composer require bowphp/cqrs
```

## Help

Tout dabord, créez lexemple de commande:
Tout d'abord, créez l'exemple de commande:

```php
use Bow\CQRS\Command\CommandInterface;
Expand Down
2 changes: 1 addition & 1 deletion docs/helper.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: helpers
title: "🪒 Application Helpers"
title: "🪒 Helpers"
---

import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
Expand Down
112 changes: 112 additions & 0 deletions docs/http-client.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
---
id: http-client
title: "🙅🏽‍♂️ Http Client"
---

import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";

CQRS (ségrégation des responsabilités des requêtes de commande). C'est un modèle que j'ai entendu pour la première fois décrit par Greg Young.
Au cœur se trouve l'idée selon laquelle vous pouvez utiliser un modèle différent pour mettre à jour les informations que celui que vous utilisez pour lire les informations.
Dans certaines situations, cette séparation peut être utile, mais sachez que pour la plupart des systèmes, CQRS ajoute une complexité risquée.

[Pour plus d'information](https://www.martinfowler.com/bliki/CQRS.html)

## Install

Le package utilise php >= 8.1

```bash
composer require bowphp/cqrs
```

## Help

Tout d’abord, créez l’exemple de commande:

```php
use Bow\CQRS\Command\CommandInterface;

class CreateUserCommand implements CommandInterface
{
public function __construct(
public string $username,
public string $email
) {}
}
```

Créez le gestionnaire ici :

```php
use Bow\CQRS\Command\CommandHandlerInterface;

class CreateUserCommandHandler implements CommandHandlerInterface
{
public function __construct(public UserService $userService) {}

public function process(CommandInterface $command): mixed
{
if ($this->userService->exists($command->email)) {
throw new UserServiceException(
"The user already exists"
);
}

return $this->userService->create([
"username" => $command->username,
"email" => $command->email
]);
}
}
```

Ajouter une commande au registre dans `App\Configurations\ApplicationConfiguration::class`:

```php
use Bow\CQRS\Registration as CQRSRegistration;

public function run()
{
CQRSRegistration::commands([
CreateUserCommand::class => CreateUserCommandHandler::class
]);
}
```

Exécuter la commande dans le contrôleur:

```php
namespace App\Controllers;

use App\Controllers\Controller;
use App\Commands\CreateUserCommand;

class UserController extends Controller
{
public function __construct(private CommandBus $commandBus) {}

public function __invoke(Request $request)
{
$payload = $request->only(['username', 'email']);

$command = new CreateUserCommand(
$payload['username'],
$payload['email']
);

$result = $this->commandBus->execute($command);

return redirect()
->back()
->withFlash("message", "User created");
}
}
```

Mettre un nouvel itinéraire :

```php
$app->post("/users/create", UserController::class);
```

<SuggestionFeature />
7 changes: 3 additions & 4 deletions docs/localization.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@ Tous les fichiers de langue renvoient un tableau de chaînes à clé.

Par exemple:

```php
// frontend/lang/en/messages.php
```php title="frontend/lang/en/messages.php"
return [
'welcome' => 'Welcome to our application'
];
Expand All @@ -49,7 +48,7 @@ return [

La langue par défaut de votre application est stockée dans le fichier de configuration `config/trans.php`. Bien entendu, vous pouvez modifier cette valeur pour répondre aux besoins de votre application. Vous pouvez également modifier la langue active au moment de l'exécution à l'aide de la méthode `setLocale` sur la classe [`Bow\Translate\Translator`](https://bowphp.com/api/master/Bow/Translate/Translator.html):

```php
```php title="routes/app.php"
use Bow\Translate\Translator;

$app->get('docs/:locale', function ($locale) {
Expand All @@ -60,7 +59,7 @@ $app->get('docs/:locale', function ($locale) {

Vous pouvez configurer une `lang`, qui sera utilisée lorsque la langue active ne contient pas une chaîne de traduction donnée. Comme la langue par défaut, la langue de secours est également configurée dans le fichier de configuration `config/trans.php`:

```php
```php title="config/trans.php"
'lang' => 'en',
```

Expand Down
9 changes: 9 additions & 0 deletions docs/messaging.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
id: messaging
title: "🎯 Messaging"
---

import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";


<SuggestionFeature />
2 changes: 0 additions & 2 deletions docs/middleware.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";

Les middlewares constituent un mécanisme pratique pour filtrer les requêtes HTTP entrant dans votre application. Par exemple vous pouvez faire un middleware pour vérifier si un utilisateur est connecté et ensuite faire une action en fonction. Vous pouvez exécuter du code avant et après votre application Bow pour manipuler les objets `Request` et `Response` comme bon vous semble.

<script id="asciicast-bfTIiqg1ew9x1QRxeMTufxJJU" src="https://asciinema.org/a/bfTIiqg1ew9x1QRxeMTufxJJU.js" data-speed="2" async></script>

## Comment ça marche

Différents Frameworks utilisent le système de middleware différemment. Bow ajoute un middleware sous forme de file d'attente au dessus de votre application principale. Chaque nouvelle couche de middleware est ajouté la file de middleware existante. La structure de file se dilate vers l'extérieur au fure et à mesure que les couches intermédiaires supplémentaires sont ajoutées.
Expand Down
2 changes: 1 addition & 1 deletion docs/package.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: package
title: "📦 Bow Package"
title: "📦 Package"
---

import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
Expand Down
18 changes: 6 additions & 12 deletions docs/responses.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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";
});
```
Expand All @@ -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'];
});
```
Expand All @@ -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;
Expand All @@ -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);
Expand Down
59 changes: 58 additions & 1 deletion docs/service.mdx
Original file line number Diff line number Diff line change
@@ -1,8 +1,65 @@
---
id: service
title: "🏢 Approche service"
title: "🏢 Approche Service"
---

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.

## Utilisation

Pour ajouter un service rien de plus simple que d'untilisé la commande suivante :

```bash
php bow add:service UserService
```

Un service `UserService` sera créé dans le dossier par default dans le dossier `app/Services`. Et nous allons ajouter la méthode suivante `fetchAllUsers` pour récupérer tout les utilisateurs enregistrés dans la base de donnée.

```php title="app/Services/UserService"
namesapce App\Services;

use App\Models\User;

class UserService
{
public function fetchAllUsers()
{
return User::all();
}
}
```

## Utilisation du service

Pour utiliser le service nous allons l'inject là ou nous voulons l'utiliser, dans notre cas dans un controller.

Lancer la commande suivante pour créer un nouveau controller

```bash
php bow add:controller UserController
```

Dans le controleur nous allons maintenant injecter le service:

```php
class UserController extends Controller
{
public function __construct(
private UserService $userService
) {}

public function showIndex()
{
$users = $this->userService->fetchAllUsers();

// do something
}
}
```

<SuggestionFeature />
11 changes: 4 additions & 7 deletions docs/session.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
id: http-session
title: "🎬 Gestion de session"
title: "🎬 Session"
---

import SuggestionFeature from "@site/src/components/Partials/SuggestionFeature";
Expand All @@ -25,10 +25,9 @@ Les applications HTTP étant sans état, les sessions offrent un moyen de stocke

il existe deux manières principales de travailler avec les données de `session` dans Bow, le helper global de `session` et via une instance `Bow\Http\Request`.

Premièrement, examinons laccès à la session via une instance `Bow\Http\Request`, qui peut être indexée sur une méthode de contrôleur. N'oubliez pas que les dépendances des méthodes du contrôleur sont automatiquement injectées via le conteneur Bow:
Premièrement, examinons l'accès à la session via une instance `Bow\Http\Request`, qui peut être indexée sur une méthode de contrôleur. N'oubliez pas que les dépendances des méthodes du contrôleur sont automatiquement injectées via le conteneur Bow:

```php

namespace App\Controllers;

use App\Controllers\Controller;
Expand Down Expand Up @@ -58,8 +57,7 @@ Lorsque vous récupérez un élément de la session, vous pouvez également tran
```php
$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function ()
{
$value = $request->session()->get('key', function () {
return 'default';
});
```
Expand All @@ -69,8 +67,7 @@ $value = $request->session()->get('key', function ()
Vous pouvez également utiliser la fonction PHP de `session` globale pour récupérer et stocker des données dans la session. Lorsque le helper `session` est appelé avec un seul argument de chaîne, il renvoie la valeur de cette clé de session. Lorsque l'assistant est appelé avec un tableau de paires clé/valeur, ces valeurs sont stockées dans la session:

```php
$app->get('home', function ()
{
$app->get('home', function () {
// Récupérer une donnée de la session
$value = session('key');

Expand Down
Loading

0 comments on commit 1c1a4c1

Please sign in to comment.