Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Uuid Paramconverter Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — critical mismatch, unchanged. Despite the "Laravel/PHP package" grouping, mcfedr/uuid-paramconverter remains a Symfony bundle, not a Laravel package. Release 4.2.0 does not alter this. It still wires three Symfony-specific extension points around ramsey/uuid:

  • ParamConverter — relies on SensioFrameworkExtraBundle's controller-argument conversion (route {id} → UuidInterface). Laravel has no equivalent concept; its analogue is Route Model Binding.
  • Normalizer — a Symfony Serializer normalizer for UuidInterface ↔ string in JSON. Laravel ships its own serialization (API Resources / JsonSerializable / casts).
  • Form Type — a Symfony Form type for UUID input. Laravel uses FormRequests + validation rules.

In a genuine Laravel codebase this package is unusable without adopting large swaths of the Symfony ecosystem. Nothing in 4.2.0 changes that; the release is a dependency-floor bump, not a re-architecture.

What 4.2.0 actually changes. The only stated change is "drops support for older PHP and Symfony." That is a constraint-tightening release, and materially it moves the needle on two prior findings:

  • Compatibility risk is reduced, not eliminated. The previous assessment flagged likely conflicts with modern ramsey/uuid (v4) and Symfony 6.4/7. Raising the floor suggests the maintainer has modernised the constraint set, so installation on a current Symfony LTS is now plausible where it previously was doubtful. This must be verified with composer why-not on the target stack — the release note does not name a minimum PHP, minimum Symfony, or a ramsey/uuid range.
  • Abandonment signal is softened. The package sat at Jan 2022 with zero dependents and a single maintainer. A modernisation release is evidence the maintainer is still responsive, which lowers (but does not remove) orphan risk. It is one data point, not a support commitment.
  • The ParamConverter question is still unanswered. The release note is silent on whether the underlying SensioFrameworkExtraBundle conversion path was replaced with Symfony argument resolvers. If 4.2.0 merely raises version floors while retaining the deprecated mechanism, it is modernised packaging around a dead contract. If it migrated to argument resolvers, the package is meaningfully more durable on Symfony — and that distinction is the single most important thing to establish.

Integration feasibility. For a Symfony shop: high and now more likely to install cleanly on a current stack, though the exit-planning caveat stands. For a Laravel shop: still low — treat as a reference implementation, not a dependency. The capability is trivially reproducible with native primitives (HasUuids/custom cast, Route::bind, Rule::uuid, API Resources).

Technical risk.

  • Breaking change under a minor version. 4.2.0 drops PHP and Symfony support, which is a breaking change for any consumer on an older runtime, published as a patch/minor bump. Treat the project's semver discipline as unreliable: pin exactly and read the diff before any update.
  • Upgrade forcing function (new). Because the floor moved, adopting the package now implicitly commits you to a minimum PHP/Symfony baseline, and each future constraint bump becomes a forced upgrade on the package's schedule rather than yours. This is a new, concrete coupling risk that did not exist under the frozen 2022 release.
  • Deprecated API dependency (unresolved). Symfony deprecated ParamConverter usage in 6.2 and removed the SensioFrameworkExtraBundle mechanism in Symfony 7. If 4.2.0 supports Symfony 7, the maintainer must have addressed this; if it does not, the package is confined to Symfony ≤6.x regardless of the raised floor.
  • Community gravity. Still negligible stars and 0 dependents. Modernisation does not create an ecosystem.
  • Unverified constraint surface. Release notes name no versions. All prior compatibility findings should be treated as stale pending verification rather than confirmed.

Key questions (revised).

  1. Are we actually a Symfony or a Laravel shop? (Still gates go/no-go outright.)
  2. What exactly are the new minimum PHP, Symfony, and ramsey/uuid versions in 4.2.0's composer.json? Read the manifest, not the changelog.
  3. Did 4.2.0 replace ParamConverter with Symfony argument resolvers, or merely raise floors? Check the diff for removed SensioFrameworkExtraBundle references and added resolver/attribute classes.
  4. Does 4.2.0 install on Symfony 7? If yes, the deprecation blocker is cleared and the Symfony-path verdict improves materially.
  5. If Laravel: what is our UUID strategy — string PKs, ramsey/uuid objects, or ULIDs — and do we need framework-level normalization at all?
  6. Is any third-party normalization/form contract required, or is this purely internal?

Integration Approach

Stack fit. Unchanged: native only to Symfony + ramsey/uuid + Symfony Serializer/Forms. Zero first-class fit for Laravel's request lifecycle. The "opportunity" score (~3.73) still reflects a desirable capability (clean UUID handling at HTTP boundaries) delivered by the wrong vehicle for a Laravel stack.

Migration path (Laravel). Do not adopt — 4.2.0 does not change the calculus, and the constraint-tightening arguably makes it worse by adding upgrade coupling. Reproduce the three capabilities natively:

  • Param conversion → Route Model Binding: type-hint a UUID-backed model and resolve by UUID column, or a Route::bind closure that constructs Uuid::fromString() and 404s on InvalidUuidStringException.
  • Normalizer → Casts + API Resources: a custom RamseyUuidCast for Eloquent attributes and JsonResource output casting UUID to string.
  • Form Type → Validation + FormRequest: Rule::uuid() (or a custom rule wrapping Uuid::isValid) plus a request DTO hydrating UuidInterface.

Same ergonomics, zero external dependency, full control over error semantics.

Migration path (Symfony, if applicable). The 4.2.0 release slightly improves the stopgap case if it genuinely supports Symfony 6.4/7 via argument resolvers — that would let you adopt with a viable forward path. Still isolate behind a thin internal interface so the ParamConverter/normalizer/form wiring can be swapped for native argument resolvers. Plan the exit before entry. If 4.2.0 does not clear the Symfony 7 floor, this path remains a dead end and should be closed.

Compatibility. Previously "expect friction on modern ramsey/uuid v4 and Symfony 6.4/7" — 4.2.0 appears to address this, but the release note is too terse to confirm. Re-run composer why-not against the target stack before committing; treat all prior compatibility conclusions as unverified until the 4.2.0 manifest is read. Also confirm forward support: does the package work with the next Symfony LTS, or only the current one?

Sequencing.

  1. Confirm framework reality (Laravel vs Symfony) — gates everything.
  2. Read 4.2.0's composer.json and diff — establish actual version floors and whether ParamConverter was replaced by argument resolvers.
  3. If Laravel: skip the package; implement casts/binding/validation in a single sprint as a shared internal utility.
  4. If Symfony: timeboxed PoC on the current framework version. If it installs and uses resolvers, adopt pinned and isolated. If it does not install or still uses ParamConverter, fork or reimplement.
  5. Establish an internal UUID convention doc regardless of path.

Operational Impact

Maintenance. The single-maintainer, no-dependents picture is unchanged, but 4.2.0 is a positive signal: the maintainer is active and willing to modernise. Offsetting that, they shipped a breaking change as a minor version — so pin exactly (e.g. 4.2.0), never ^4.2, and review diffs before every bump. Budget for vendoring or a private fork remains prudent. For the Laravel path, the native replacement is ~100–200 LOC you own — materially lower long-term maintenance than an actively-churning external dependency.

Support. GitHub issues only; no commercial backing, no security response process, no published cadence. 4.2.0 does not add any of these. Treat as unsupported open source. Mitigating factor: MIT, small reviewable codebase.

Scaling. Runtime overhead is negligible (thin normalizer/form/param-converter glue). The real scaling concern remains orthogonal: UUID primary keys cause index fragmentation and larger indexes vs. auto-increment. That is a data-modelling decision, not this package's problem — flag separately if UUID PKs are planned at volume.

Failure modes.

  • Constraint-bump breakage (elevated by 4.2.0). Future releases can drop the PHP/Symfony versions you run on, as 4.2.0 just did, forcing an upgrade on the maintainer's schedule.
  • Framework upgrade breakage — if 4.2.0 has not migrated to argument resolvers, ParamConverter removal in Symfony 7 still silently kills route conversion.
  • Exception leakage — malformed UUIDs surfacing as 500s instead of 404/422 if not explicitly handled.
  • Serializer/form version drift — normalizer/form type incompatibility after a Serializer or Forms bump.
  • Dependency resolution failure — now more likely to force an upgrade than to block install, but either direction can cascade into unrelated packages.
  • Orphan risk — reduced but not eliminated; one release does not constitute a support commitment.

Ramp-up. Small surface area (three classes of integration), readable source, so onboarding cost is low — for engineers who already know Symfony concepts. On a Laravel team, the conceptual translation cost (ParamConverter ≠ Route Binding, Symfony Forms ≠ FormRequests) still exceeds the cost of writing the native equivalent.

Recommendation. Do not adopt into a Laravel stack — 4.2.0 changes nothing here. Use it as a design reference for a small internal UUID utility. For an existing Symfony app, 4.2.0 improves the case for a pinned, isolated adoption by lowering install friction and demonstrating maintainer engagement — but only after verifying that the release replaced ParamConverter with argument resolvers. If it did not, the prior recommendation stands: build on native argument resolvers instead. Net position: the release is a modest positive for the Symfony path and neutral for the Laravel path; it does not change the headline verdict, but it does change what we must verify before deciding.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource