Ga naar de hoofdinhoud
{}

Open-source Laravel tool

Laravel Transaction Guard

Statische analysetool die Laravel-code controleert op side effects die een database-rollback kunnen ontsnappen.

Wanneer gebruik je deze tool?

Gebruik deze package tijdens development, CI of een expliciete deployment- of maintenance-scan om riskante side effects binnen DB::transaction(...) en handmatige transacties vroeg te detecteren, voordat een rollback databasewijzigingen terugdraait maar externe acties al uitgevoerd zijn.

Onveilige transaction boundaries worden statisch zichtbaar, gangbare after-commitpatronen worden herkend en bestaande projecten kunnen met een baseline stapsgewijs strengere controles invoeren.

Voor wie is dit hulpmiddel? Laravel-teams die database-transacties gebruiken en jobs, events, mail, notificaties, HTTP-calls of andere externe side effects veilig rond commits willen organiseren en valideren.

Quickstart

Lokale installatie

Gebruik de repository als startpunt. Controleer voor productie altijd de eigen projectvereisten en lockfiles.

Kies één installatievorm. Deze commando’s zijn alternatieven, geen opeenvolgende stappen.

Ook beschikbaar na composer install --no-dev

composer require codegenie-be/laravel-transaction-guard

Alleen voor development en CI

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

Belangrijkste mogelijkheden

  • 01Analyseert zowel DB::transaction(...) als handmatige beginTransaction(), commit() en rollBack()-flows
  • 02Detecteert onder meer riskante jobs, events, mail, notificaties, broadcasts, muterende HTTP-calls, filesystem-, cache-, Redis-, proces- en cross-connection database-side effects
  • 03Herkent gangbare veilige after-commitpatronen, inclusief afterCommit(), ShouldQueueAfterCommit, ShouldDispatchAfterCommit en DB::afterCommit(...) callbacks
  • 04Ondersteunt GitHub-, JSON- en SARIF-output met een configureerbare fail-on-drempel voor CI en andere automatisering
  • 05Ondersteunt baselines en gerichte lokale suppressions voor gecontroleerde invoering in bestaande projecten
  • 06Kan expliciet read-only worden uitgevoerd in local, testing, staging, production, CI en custom Laravel environments zonder package-specifieke .env-variabelen
  • 07Voert alleen statische analyse uit en wijzigt geen transacties of normaal HTTP-gedrag via runtime hooks of monkey-patching

Een rollback bereikt externe acties niet

Synthetisch scenario: een transactie wijzigt een order en voert een HTTP-aanroep uit. Daarna faalt de transactie. De database kan terugrollen, maar die externe aanroep wordt niet ongedaan gemaakt. Transaction Guard analyseert zulke patronen statisch; de tool verandert de transactie niet tijdens een HTTP-request.

bash
php artisan transaction:guard --format=json

Een finding oplossen

  • Kies bewust tussen de developmentdependency en een installatie die ook na --no-dev beschikbaar blijft. Voer niet beide alternatieven achter elkaar uit.
  • Organiseer externe acties pas na de relevante commit. Na commit kan de externe actie nog altijd mislukken; herstel, statusopvolging en idempotency blijven aparte ontwerptaken.
  • Een after-commitpatroon is geen garantie op exact één externe verwerking. Test ook dubbele aflevering en herhaling na een fout.
  • De gedocumenteerde scanner opent zelf geen databaseverbindingen en voert de geanalyseerde code niet uit. De Laravel-applicatie moet wel kunnen booten.
  • Een statische finding kan context missen. Gebruik een gerichte, onderbouwde uitzondering in plaats van alle waarschuwingen te negeren.
Lees over externe acties, retries en idempotency

Nog een nuttig Laravel-resource

Laravel Livewire Multistep Form

Open source

Open-source Composer-package voor Laravel 12/13 en Livewire 3.6+/4: een configureerbaar meerstapsformulier met validatie, reviewstap en een hook voor gecontroleerde verwerking.

Laravel-teams die een formulier met meerdere stappen willen integreren zonder de opslaglogica van hun applicatie aan een package over te dragen.

Een tool aanpassen aan je eigen Laravel-project?

Codegenie kan de flow, styling, validatie of deployment afstemmen op je bestaande applicatie.