Maintenance release — no breaking changes (the Roave backward-compatibility check passes).
Improvements
- PHP 8.4 compatibility: parameter types that were implicitly nullable are now explicitly nullable (
?string,?int).
Internal
Metadatanow tracks expiry timestamps in a dedicated, precisely-typed property instead of a reserved key inside the data array. Behaviour is unchanged; the only observable difference is that the reserved__expireskey is serialized last (this does not affect reconstructing aMetadataobject fromtoArray()/JSON, which is key-based).
Tooling
- Inlined the individual
setono/code-quality-packpackages intorequire-dev. - Replaced Psalm with PHPStan (
level: max). - Replaced
composer-require-checker+composer-unusedwithshipmonk/composer-dependency-analyser. - Migrated to PHPUnit 10, expanded the CI matrix to PHP 8.1–8.4, and added tests (reconstruction, lazy expiry, pruning, malformed expiry data).
Full changelog: v1.1.1...v1.1.2