phpmentors/validator-bundle
A Symfony bundle from PHP Mentors that adds flexible validation support to your application, integrating with Symfony's validation component and offering reusable constraints for validating domain objects, forms, and request data.
Architecture fit — still poor for a Laravel stack, and the release does not touch this. The package remains a Symfony bundle (phpmentors/validator-bundle): a Bundle subclass, a DI extension with a configuration tree, service definitions under Resources/config, bootstrapped via symfony/http-kernel / symfony/framework-bundle. v1.3.0 changes only the supported Symfony range; it does not introduce framework-agnostic packaging (no PSR-11-only service provider, no standalone factory, no Laravel service provider). Laravel has no bundle-registration lifecycle, so there is still no seam. The package also presumes symfony/validator as the validation engine, whereas Laravel ships Validator, FormRequest, and the Rule contract. Net-new capability for our stack: unchanged at effectively zero.
What v1.3.0 actually changes. The constraint moves from a Symfony 2.x-era floor to Symfony 2.8.0 or 3.0.0 or 4.0.0 or greater (PR #13, @iteman). This materially corrects one prior assumption: the package is not pre-Symfony-4 — it explicitly supports Symfony 4. It also implies the effective ceiling is Symfony 4: there is no Symfony 5/6 support, and Symfony 4.4's security support window has already closed (Nov 2023). So the ceiling is a version line that is itself end-of-life. The PHP constraint is still unverified from the release notes and remains the deciding factor for installability; a Symfony-4-era constraint set typically implies PHP 7.1–7.4, which collides with a PHP 8.1+ Laravel baseline at the Composer solver level. One contributor landing one PR is a sign of life, not a maintenance stream.
Integration feasibility — still not feasible without a fork or a port. Composer may now resolve more of the dependency graph than previously assumed, but the bundle still will not boot without symfony/framework-bundle, symfony/dependency-injection, and symfony/config. Pulling FrameworkBundle into a Laravel app to satisfy a thin validation wrapper remains disproportionate. For a Symfony 3/4 application the package would install natively, but we have not identified one in the org, and even then we would be adopting a dependency pinned to an EOL Symfony line. The realistic path is unchanged: read the source, reimplement the pattern.
Technical risk — high, marginally reduced in narrow cases, unchanged for us. Abandonment profile is essentially the same: 8 stars, 0 dependents, no security-patch stream, no backport path, no community to absorb breakage. BSD-2-Clause remains permissive and legally clean. v1.3.0 narrows the "won't even resolve" risk for legacy Symfony stacks and removes the "predates Symfony 4" objection, but it introduces no forward path and no support commitment. Opportunity score (7.02) versus composite score (0.23) still reads as an interesting idea space with an unmaintained artifact.
Key questions to resolve before any decision:
composer.json constraints after v1.3.0 — specifically the php requirement and whether symfony/validator is capped below 5? (composer why-not against our target PHP/Laravel.)symfony/validator — actual class list and public API, still unenumerated.Stack fit — high overlap, low marginal value; unchanged by the release. Laravel's validation layer covers the same problem space: FormRequest for boundary validation, Rule objects for reusable constraints, Validator::after for cross-field logic, validateWithBag for multi-form error bags, first-class nested/array validation. Symfony's constraint model maps near 1:1 onto Laravel rules. Any behavior in this bundle is plausibly expressible as a small service class plus one or two custom rules. v1.3.0 raises the Symfony version ceiling but does not add capability we lack.
Migration path — same three options, same preference order:
Validator contract) plus custom Rule classes. Estimated 1–2 engineer-days including tests. No third-party dependency, no platform-constraint risk.Compatibility work required: re-read composer.json post-v1.3.0 to pin the PHP floor/ceiling and the symfony/validator cap; confirm whether the bundle installs under our platform requirements without --ignore-platform-reqs (which we should not use — it defers failure to runtime). Confirm whether Symfony 4 support extends to 4.4 LTS or stops earlier.
Sequencing:
Maintenance — we would own everything. Still unmaintained in any meaningful sense; the v1.3.0 PR is a one-off contribution, not evidence of a release cadence, CVE response, or deprecation policy. A fork carries ownership cost disproportionate to the code volume. A pattern port is cheaper to own: it lives in our codebase, follows our conventions, and carries no external version constraint.
Support — none available. No vendor, no sustained maintainer engagement, sparse documentation (likely Japanese-language only, consistent with the phpmentors-jp origin). Any incident becomes internal archaeology. The single new contributor contact in PR #13 is not a support channel.
Scaling — neutral. A thin validation-invocation layer is CPU-bound and short-lived, with no infrastructure, queue, or persistence implications. Not a throughput bottleneck. The scaling concern is organizational: who maintains the fork, and against which (EOL) Symfony line.
Failure modes to plan for:
FormRequest authorization, error-bag handling) if the port is bolted on rather than integrated.Ramp-up — shallow on the API, steep on ownership. The whole surface is learnable in hours. The real cost is the standing obligation to maintain code we did not write, with conventions we did not choose, and no support path. For a validation helper, that trade is not justified.
Recommendation: unchanged. Treat this package as a design reference, not a dependency. The v1.3.0 Symfony 3/4 support corrects the record on version constraints and slightly improves the picture for a hypothetical legacy Symfony consumer, but it does not alter the Laravel conclusion: extract the pattern, implement it in Laravel idioms, and close the vendor evaluation.
How can I help you explore Laravel packages today?