innmind/url-resolver
Lightweight PHP library that maps incoming URLs to the resources that handle them. Register resolvers to match request paths, extract parameters, and return controllers or handlers, keeping routing logic decoupled, testable, and framework-agnostic.
Architecture fit
The package is framework-agnostic, which cuts both ways in a Laravel context. It offers a URL resolution abstraction (per the description, mapping a URL to a handler/resolver; per the package name, turning relative URLs into absolute ones — see the ambiguity below) and deliberately does not bind to Laravel's router. That means it can only be adopted behind a Laravel adapter — a small bridge layer that translates between the package's resolver contract and Laravel's routing/URL generation. Architecturally that is a defensible boundary pattern, but it adds a seam the framework already solves natively: Laravel ships url(), URL::to(), route(), and the URL facade, and its router handles URL→handler mapping as a first-class concern. The TPM question is not "can it fit" but "what does it buy over the native facility." For most Laravel applications, the honest answer is little.
Integration feasibility
Composer-only, no service-provider friction implied. Two hard constraints dominate:
composer update time.innmind/immutable 5 is a major-version requirement. Any transitive dependency pinning ^4 produces an unresolvable conflict — the most likely practical blocker in a large Laravel dependency tree.Technical risk (dominant factor)
innmind/immutable. Caret constraints (^5.0) pull breaking changes silently into routine updates.Key questions
innmind/immutable types in its public API, or are they internal?url()/route()/router already cover the requirement with less risk?immutable: ^5 a hard constraint or ^4 || ^5?Stack fit
Target PHP 8.2–8.4 against Laravel 10/11/12, pending CI-matrix confirmation (unlikely, given the archive date). PHP 8.1 apps are out of scope for 5.1.0 entirely. Given the package is archived, expect the Laravel compatibility claim to be untested.
Build-vs-buy decision (the real migration path)
Treat this as a build vs. adopt-vs-avoid decision, not a version bump:
url()/URL::to() and the router already deliver it, are maintained by the framework, and carry zero added dependency risk. The package's differentiator is framework-agnosticism, which has no value inside a Laravel-only application.Compatibility
If adopting, pin exactly (5.1.0) — do not use caret — because the release history already shows breaking changes landing in minor versions. Lockfile diff review on every subsequent update is mandatory.
Sequencing
innmind/immutable usage to size the API-exposure question.Maintenance
This is the decisive operational concern: an archived package has no maintenance owner. We inherit 100% of the maintenance burden on adoption — PHP-version compatibility, security patching, and any Laravel-integration drift. That is a permanent, if small, tax. If the package is genuinely a few hundred lines, forking it into an internal package may be cheaper than the governance overhead of tracking an archived dependency. Do not adopt without an explicit internal owner.
Support
Low technical support load — the package surface is small. The real support question is governance: "why are we depending on an archived package with 2 stars?" — a question that will resurface in every dependency review. Pre-empt it with a written adoption rationale and a sunset/exit criterion. If innmind types are public, add a second class of questions around functional idioms unfamiliar to typical Laravel developers.
Scaling
Negligible. URL resolution is cheap; runtime characteristics are governed by the application, not this dependency. No benchmarking required unless it lands on an extremely hot request path, which is unlikely.
Failure modes
immutable ^4; resolution fails with a message easily misread as a package bug.Ramp-up
Low on the technical side — install, adapt, consume. Meaningfully higher on the governance and ownership side: adopting an archived package requires an explicit internal maintainer, a fork strategy, and a documented exit criterion. Budget that institutional cost, not just the integration time. If innmind monads surface in the public API, add a short internal walkthrough on persistent collections and monadic composition, which sit outside typical Laravel experience.
Bottom line for the TPM: Score 0.17, 2 stars, 0 dependents, and archived status together indicate this package should not be adopted into a maintained Laravel application absent a verified capability gap that Laravel's native URL/router facilities cannot fill — and even then, plan to fork it rather than depend on it.
How can I help you explore Laravel packages today?