Maison > cadre php > Laravel > Développement Laravel : Comment créer des applications événementielles à l'aide de Laravel Event Sourcing ?

Développement Laravel : Comment créer des applications événementielles à l'aide de Laravel Event Sourcing ?

王林
Libérer: 2023-06-13 12:06:50
original
1063 Les gens l'ont consulté

Développement Laravel : Comment créer des applications basées sur des événements à l'aide de Laravel Event Sourcing ?

Une application basée sur les événements est une application qui utilise des événements et des gestionnaires d'événements (Event Handler) pour l'implémenter. Une architecture basée sur les événements rend les applications plus faciles à développer et à maintenir, plus flexibles et plus faciles à adapter aux changements.

Laravel est un framework PHP populaire qui fournit une fonctionnalité appelée Event Sourcing qui peut nous aider à créer des applications basées sur des événements. Cet article explique comment utiliser Laravel Event Sourcing pour créer une application simple basée sur les événements.

1. Qu'est-ce que le sourcing d'événements Laravel ?

Laravel Event Sourcing est un framework de modélisation basé sur les événements, qui est une suite fournie par Laravel pour nous aider à créer des applications basées sur des événements. Il stocke et restaure les événements, nous permettant de reproduire l'état dans l'application et de revenir aux états précédents.

2. Pourquoi utiliser Laravel Event Sourcing ?

L'avantage d'utiliser Laravel Event Sourcing est qu'il peut améliorer l'évolutivité et la maintenabilité de l'application. Lorsque nous utilisons des applications basées sur des événements, il est plus facile de comprendre et de modifier différentes parties de l'application, et l'application est plus robuste.

En utilisant Laravel Event Sourcing, nous pouvons facilement implémenter plusieurs modes, notamment le mode CQRS (Command Query Responsibility Segregation) et le mode ES (Event Sourcing).

3. Comment utiliser Laravel Event Sourcing pour créer une application événementielle ?

Dans cet exemple, nous allons créer une application simple de gestion de tâches où les utilisateurs peuvent créer et effectuer des tâches.

Étape 1 : Créer une tâche

Nous pouvons montrer comment utiliser Laravel Event Sourcing en créant une tâche. Tout d’abord, nous devons créer un événement « TaskCreated » pour gérer le comportement de création d’une tâche.

php artisan make:event TaskCreated
Copier après la connexion

Étape 2 : Créer un gestionnaire d'événements pour la tâche

Une fois que nous avons créé un événement, nous devons créer un gestionnaire d'événements pour gérer l'événement. Nous devons maintenant créer un gestionnaire d'événements pour gérer l'événement "TaskCreated".

php artisan make:listener CreateTaskListener --event=TaskCreated
Copier après la connexion

Étape 3 : lier les événements et les gestionnaires d'événements ensemble

Maintenant, nous devons lier les événements et les gestionnaires d'événements ensemble. Nous pouvons y parvenir dans le fichier EventServiceProvider de Laravel.

protected $listen = [
    TaskCreated::class => [
        CreateTaskListener::class,
    ],
];
Copier après la connexion

Étape 4 : Utiliser le gestionnaire d'événements pour gérer l'événement de création de tâche

Nous pouvons maintenant utiliser notre gestionnaire d'événements pour gérer l'événement de création de tâche. Le premier gestionnaire d'événements que nous implémenterons est CreateTaskListener, qui créera réellement la nouvelle tâche.

public function handle(TaskCreated $event)
{
    $task = new Task;
    $task->name = $event->name;
    $task->save();
}
Copier après la connexion

Étape 5 : Utiliser Laravel Event Sourcing pour stocker des événements

L'utilisation de Laravel Event Sourcing nous permet de stocker et de restaurer des événements. Nous devons utiliser la bibliothèque Event Sourcing dans Laravel, telle que la bibliothèque Broadway.

Nous pouvons utiliser le fichier composer.json de Laravel pour ajouter la bibliothèque Broadway :

"require": {
    "broadway/broadway": "^1.0",
    "broadway/serializer": "^1.0",
    "broadway/event-store": "^1.0"
}
Copier après la connexion

Exécutez ensuite la commande suivante pour installer la bibliothèque Broadway :

composer install
Copier après la connexion
#🎜🎜 #Étape 6 : Utiliser Laravel Event Sourcing

Maintenant, nous pouvons utiliser Laravel Event Sourcing pour stocker des événements.

Nous devons créer un magasin d'événements pour stocker et récupérer les événements. Nous pouvons l'implémenter en créant une classe appelée TaskEventStore.php dans le dossier de l'application de Laravel :

use BroadwayEventStoreEventStore;
use BroadwayEventSourcingEventSourcingRepository;

class TaskEventStore extends EventSourcingRepository
{
    public function __construct(EventStore $eventStore)
    {
        parent::__construct(
            $eventStore,
            new TaskAggregateRootEventSourcedFactory(),
            new TaskAggregateRootEventSourcedRepository()
        );
    }
}
Copier après la connexion

Nous devons créer un nouveau magasin d'événements dans le constructeur de la classe TaskEventStore et utiliser EventSourcingRepository dans la bibliothèque Broadway pour stocker événements. Nous devons également définir une fabrique de racines agrégées et un référentiel racine agrégé pour gérer nos racines agrégées.

Nous pouvons désormais utiliser la classe TaskEventStore pour stocker des événements. Nous pouvons ajouter le code suivant dans le gestionnaire d'événements CreateTaskListener :

$eventStore = $this->app->make(TaskEventStore::class);
$eventStream = new DomainEventStream([$event]);

$aggregateRoot = $eventStore->load($command->taskId);
$aggregateRoot->handle($event);

$eventStore->save(
    $aggregateRoot->getUncommittedEvents(),
    $aggregateRoot->getId()
);
Copier après la connexion

Cet extrait de code récupère une instance de la classe TaskEventStore, crée un flux d'événements, charge la racine agrégée, appelle la méthode handle et enregistre le non validé. événements.

Nous devons également lier la classe TaskEventStore dans la classe ServiceProvider de Laravel :

$this->app->singleton(TaskEventStore::class, function ($app) {
    $eventStore = new InMemoryEventStore;
    return new TaskEventStore($eventStore);
});
Copier après la connexion

Étape 7 : Rechercher et afficher les tâches

Maintenant, nous créons un nouveau tâche, nous pouvons montrer toutes les tâches à l'utilisateur en modifiant notre requête.

Créez une commande appelée ShowTasks :

php artisan make:command ShowTasks
Copier après la connexion

Le premier processeur de commandes que nous allons implémenter est ShowTasks, qui renverra toutes les tâches pour l'affichage de la liste.

public function handle()
{
    $tasks = Task::all();
    foreach ($tasks as $task) {
        $this->info("Name: {$task->name}");
    }
}
Copier après la connexion

Étape 8 : Marquer la tâche comme terminée

Maintenant, nous voulons simuler le comportement de marquage de la tâche comme terminée. Nous pouvons utiliser un événement « TaskCompleted » pour suivre ce comportement.

Tout d'abord, nous devons créer un événement "TaskCompleted":

php artisan make:event TaskCompleted
Copier après la connexion

Ensuite, nous créerons un gestionnaire d'événements nommé CompleteTaskHandler pour gérer cet événement.

php artisan make:listener CompleteTaskHandler --event=TaskCompleted
Copier après la connexion

Ensuite, nous lions l'événement "TaskCompleted" et le gestionnaire d'événements CompleteTaskHandler :

protected $listen = [
    TaskCreated::class => [
        CreateTaskListener::class,
    ],
    TaskCompleted::class => [
        CompleteTaskHandler::class,
    ],
];
Copier après la connexion

Enfin, le deuxième gestionnaire d'événements que nous souhaitons implémenter est CompleteTaskHandler, qui définira le statut de la tâche sur Terminé.

public function handle(TaskCompleted $event)
{
    $task = Task::where('name', $event->name)->firstOrFail();
    $task->completed = true;
    $task->save();
}
Copier après la connexion
À ce stade, nous avons réussi à créer une application événementielle où les utilisateurs peuvent créer, compléter et afficher des listes de tâches.

CONCLUSION

L'utilisation de Laravel Event Sourcing peut nous aider à créer des applications basées sur les événements. Les applications basées sur les événements sont plus évolutives, plus faciles à maintenir et plus flexibles. Avec Laravel Event Sourcing, nous pouvons facilement implémenter plusieurs modèles, y compris les modèles CQRS et ES, nous recommandons donc aux développeurs d'utiliser une architecture basée sur les événements lors de la création d'applications.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal