Aller au contenu principal
{}

Outil Laravel open source

Laravel Transaction Guard

Outil d'analyse statique qui contrôle le code Laravel afin de détecter les effets de bord pouvant échapper à un rollback de base de données.

Quand utiliser cet outil ?

Utilisez ce package pendant le développement, en CI ou lors d'un scan explicite de déploiement ou de maintenance pour détecter les effets de bord risqués dans DB::transaction(...) et les transactions manuelles avant qu'un rollback puisse annuler les modifications en base alors que des actions externes ont déjà été exécutées.

Les limites de transaction non sûres deviennent visibles par analyse statique, les modèles after-commit courants sont reconnus et les projets existants peuvent renforcer progressivement leurs contrôles grâce à une baseline.

À qui s’adresse cet outil ? Équipes Laravel qui utilisent des transactions de base de données et veulent synchroniser en toute sécurité les jobs, événements, e-mails, notifications, appels HTTP et autres effets externes avec les commits, tout en les validant dans leur chaîne de livraison.

Quickstart

Installation locale

Utilisez le dépôt comme point de départ. Vérifiez toujours les exigences et lockfiles de votre projet avant la production.

Choisissez un mode d’installation. Ces commandes sont des alternatives, pas des étapes consécutives.

Disponible après composer install --no-dev

composer require codegenie-be/laravel-transaction-guard

Développement et CI uniquement

composer require --dev codegenie-be/laravel-transaction-guard

Fonctionnalités principales

  • 01Analyse DB::transaction(...) ainsi que les flux manuels beginTransaction(), commit() et rollBack()
  • 02Détecte notamment les jobs, événements, e-mails, notifications, broadcasts, appels HTTP mutatifs et effets de bord liés au filesystem, au cache, à Redis, aux processus ou aux écritures de base de données sur une autre connexion
  • 03Reconnaît les modèles after-commit sûrs courants, notamment afterCommit(), ShouldQueueAfterCommit, ShouldDispatchAfterCommit et les callbacks DB::afterCommit(...)
  • 04Prend en charge les formats GitHub, JSON et SARIF avec un seuil fail-on configurable pour la CI et d'autres automatisations
  • 05Prend en charge les baselines et les suppressions locales ciblées pour une adoption contrôlée dans les projets existants
  • 06Peut être exécuté explicitement en lecture seule dans les environnements local, testing, staging, production, CI et Laravel personnalisés, sans variable .env propre au package
  • 07Effectue uniquement une analyse statique et ne modifie ni les transactions ni le comportement HTTP normal via des hooks runtime ou du monkey-patching

Un rollback n’annule pas les actions externes

Scénario synthétique : une transaction modifie une commande et effectue un appel HTTP, puis échoue. La base peut revenir en arrière, mais l’appel externe n’est pas annulé. Transaction Guard analyse statiquement ces modèles ; il ne modifie pas les transactions pendant une requête HTTP.

bash
php artisan transaction:guard --format=json

Résoudre un constat

  • Choisissez la dépendance de développement ou une installation qui reste disponible après --no-dev. N’exécutez pas les deux alternatives successivement.
  • Organisez les actions externes après le commit concerné. Elles peuvent encore échouer ; la reprise, les statuts et l’idempotence restent des tâches de conception distinctes.
  • Un modèle after-commit ne garantit pas un traitement externe exactement unique. Testez les doublons et les nouvelles tentatives après échec.
  • Le scanner documenté n’ouvre pas de connexion de base de données et n’exécute pas le code analysé. L’application Laravel hôte doit néanmoins pouvoir démarrer.
  • L’analyse statique peut manquer de contexte. Préférez une exception ciblée et justifiée à la suppression de tous les avertissements.
Lire l’explication des actions externes, retries et de l’idempotence

Une autre ressource Laravel utile

Formulaire multi-étapes Laravel Livewire

Open source

Package Composer open source pour Laravel 12/13 et Livewire 3.6+/4 : formulaire configurable avec validation, récapitulatif et hook de traitement contrôlé.

Équipes Laravel qui intègrent des formulaires multi-étapes sans confier la persistance de leur application au package.

Adapter un outil à votre projet Laravel ?

Codegenie peut adapter le parcours, le style, la validation ou le déploiement à votre application existante.