patchlevel/event-sourcing-phpstan-extension

PHPStan that understands your aggregates and catches event sourcing mistakes before runtime

Maintainers

Package info

github.com/patchlevel/event-sourcing-phpstan-extension

Homepage

Type:phpstan-extension

pkg:composer/patchlevel/event-sourcing-phpstan-extension

Transparency log

Statistics

Installs: 53 412

Dependents: 0

Suggesters: 1

Stars: 1

Open Issues: 1

1.3.0 2026-07-20 12:46 UTC

This package is auto-updated.

Last update: 2026-07-22 05:44:23 UTC


README

Latest Stable Version License

event-sourcing-phpstan-extension

"PHPStan that understands your aggregates and catches event sourcing mistakes before runtime."

Features

  • Property initialization for aggregate roots and child aggregates, so PHPStan does not report false uninitialized property errors.
  • Unused properties are reported when no apply method writes them, because such a property can never receive state from an event.
  • Write only properties are reported when apply methods store state that is never read, because state that is not used to check invariants belongs in a projection.
  • Recording in apply methods is reported as an error, because recording events while replaying them leads to duplicated events.
  • Writing state outside apply methods is reported as an error, because state that is not derived from an event is lost when the aggregate is reloaded.

Installation

composer require --dev patchlevel/event-sourcing-phpstan-extension

If you use phpstan/extension-installer, the extension is registered automatically. Otherwise register it in your phpstan.neon:

includes:
    - vendor/patchlevel/event-sourcing-phpstan-extension/extension.neon

Documentation

Integration

Contributing

We are open to contributions as long as they are in line with our BC-Policy.

Also note that the composer.lock is always generated with the newest supported PHP version as this is the version our tools run in the CI.