"PHPStan that understands your aggregates and catches event sourcing mistakes before runtime."
- 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.
composer require --dev patchlevel/event-sourcing-phpstan-extensionIf 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.neonWe 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.