mcfedr/uuid-paramconverter
Symfony param converter that turns UUID route parameters into Ramsey UUID objects before they reach your controllers. Type-hint UuidInterface and malformed or missing UUIDs are rejected automatically, with no manual parsing or validation boilerplate.
UuidInterface instead of strings.composer require and ~1 day of integration; build = custom ValueResolver + normalizer (~1–2 days); fork = vendor a few hundred LOC with zero upstream risk. That cost comparison is the actual decision.HasUuids, route model binding on uuid keys, custom casts), so the decision there is "do we need anything at all," not "which package."ramsey/uuid v4, and still use ParamConverter-based controller arguments. Then this is a reasonable, auditable shortcut.UuidInterface controller arguments with automatic 404s on malformed IDs, plus serializer and form integration, without writing three small classes yourself.composer.json for the actual php and symfony/* constraints and the tag diff before assuming compatibility.Look elsewhere (or copy the pattern in-house) if:
HasUuids/HasUniqueStringIds, uuid route keys, validation rules, and API Resources instead.ValueResolver plus a normalizer covers it; symfony/uid is an alternative if you are not already committed to Ramsey. This remains the recommended path and 4.2.0 does not change it.ramsey/uuid-doctrine, a separate concern.This is a tiny glue library that connects an existing UUID library (ramsey/uuid) to Symfony's web layer, so URL parameters, JSON responses, and forms all handle UUID objects instead of raw strings. It is not a platform bet: 18 stars, zero dependent packages, one maintainer, MIT licensed. The honest framing is "a three-class reference implementation we can adopt in a day or copy into our codebase in an afternoon," not "a dependency we standardize on."
What changed: version 4.2.0 dropped support for older PHP and Symfony. Read that two ways. Positive — the maintainer is still alive after a long silence, and the package is no longer implicitly pinned to an unsupported platform. Negative — the only thing this release does is raise the floor, it is a breaking change for anyone downstream, and it still does not address the real structural issue, which is that ParamConverter is a deprecated Symfony extension point. So the release improves the "is it abandoned?" question and leaves the "is it on a deprecated path?" question untouched.
For engineering: verify our PHP/Symfony versions against the 4.2.0 constraints before anything else — that is now the gating check, not the star count. If we clear the floor and still use ParamConverter, adopt; if we have already moved to ValueResolvers, port the resolver/normalizer pattern in-house and skip the dependency. For executives: license and integration cost remain effectively zero, the upside is cleaner public API identifiers and less controller boilerplate, and the downside is still bounded because the code is small enough to fork. The two things to decide deliberately rather than inherit are (1) whether adopting this drags a framework upgrade into scope, and (2) that ParamConverter itself is deprecated — we should either commit to migrating to a ValueResolver or consciously accept the legacy path. A single one-line release note is not evidence of a maintenance commitment; it is evidence the lights are on.
How can I help you explore Laravel packages today?