awurth/slim-validation
A validation package for Slim that provides a validator service and middleware, built on Respect/Validation. Define rules for request data, collect error messages, and keep controllers clean.
What shipped (v5.1.0): a minor release with Symfony 8 compatibility, two functional bug fixes (PSR-7 route arguments never read; $collection[] = $value throwing instead of appending), two behavior-visible changes (invalid rules now throws a package-owned InvalidPropertyOptionsException rather than Symfony's InvalidOptionsException; Validator no longer passes a discarded third argument to AsserterInterface::assert()), and PHPDoc array-shape/value-type annotations across the interfaces.
Architecture fit
AsserterInterface::assert() signature change points at an extension seam. If we implement custom asserters, the interface is part of our integration surface and must be treated as a contract, not an implementation detail.Integration feasibility
composer update. The two collection fixes are pure defect removal with no API surface change.AsserterInterface implementations need auditing against the dropped third argument, and any catch (Symfony\...\InvalidOptionsException) blocks around rules configuration need retargeting.Technical risk
InvalidOptionsException for InvalidPropertyOptionsException breaks existing catch blocks and any test asserting on exception class. If InvalidPropertyOptionsException does not extend the Symfony exception, previously-caught misconfiguration now escapes to the global handler as a 500 instead of a controlled error path. Verify the inheritance chain before rollout.assert() argument is clean for callers but is a BC hazard for implementers who declared it. Semver says 5.1.0 is non-breaking; treat that claim as unverified for our own extensions.Key questions
InvalidPropertyOptionsException extend Symfony's InvalidOptionsException, and is it in a namespace covered by our existing exception handling?AsserterInterface anywhere, and are those implementations pinned to a signature that includes the removed third argument?catch blocks or tests that assert on InvalidOptionsException for rules configuration?Stack fit
Migration path
composer update on a branch; capture the lockfile diff and confirm which Symfony components actually moved.InvalidOptionsException, AsserterInterface, and any assert( implementations or overrides.Compatibility
Sequencing
rules misconfiguration; add a regression test that asserts the new exception type so future drift is caught.AsserterInterface implementations and cannot patch them this cycle, pin below this release until the signature audit completes.Maintenance
Support
Scaling
Failure modes
rules option → new exception type; if uncaught, presents as a 500 rather than a handled validation error. Highest-severity failure mode introduced here.AsserterInterface implementation → signature mismatch may fail loudly at boot (good) or silently misbehave if loosely typed (bad). Prefer a hard failure; verify with a smoke test.composer update is run blindly.Ramp-up
How can I help you explore Laravel packages today?