modera/routing-bundle
Modera Routing Bundle adds flexible route management to PHP applications, with support for localized and dynamic routes, route caching, and easy integration into existing frameworks. It simplifies defining, matching, and generating URLs while keeping configuration clean and maintainable.
modera/routing-bundle is a Symfony bundle, not a Laravel package. It hooks into Symfony's bundle/DI lifecycle and routing resource loaders; Laravel has no bundle abstraction and solves the same problem natively via loadRoutesFrom() in service providers. If the asking team is on Laravel, the decision is "not applicable" — close the ticket and move on.app/config/routing.yml. For an installable-module platform, an internal bundle ecosystem, or a multi-tenant product with per-tenant modules, that host-app edit is a real per-install adoption tax. This package is evidence the pain exists and worth designing away.PrependExtensionInterface that prepends a routing resource). The correct decision is "write it in-house" or "use the framework-native pattern," never "add this dependency."[READ-ONLY]), last release June 2016 — roughly nine Symfony majors ago, Symfony 2.x/3.x and PHP 5.x era. Treat it as prior art, not a component.Consider reading it (not depending on it) when:
Look elsewhere — decisively — when:
Route::middleware(...)->group(...) or loadRoutesFrom(__DIR__.'/routes/web.php'), and package routes are auto-discovered via RouteServiceProvider. There is no gap to fill and this package cannot be installed.AbstractBundle::configureRoutes(RoutingConfigurator) (5.3+) and PrependExtensionInterface cover this natively, and Flex recipes can inject routing imports on bundle install. A modern Symfony app should use those, not a 2016 bundle.--ignore-platform-reqs hacks that push risk into runtime. Validating it would cost more than reimplementing it.To executives: We evaluated a package that solves a narrow Symfony configuration annoyance — letting installed modules register their own routes instead of requiring a manual edit to the host application's config file. The need is real for our plugin strategy, but the artifact is a dead 2016 Symfony bundle with no users, no dependents, and no maintenance. It is not installable in a Laravel service, and it is superseded on modern Symfony. Recommendation: do not adopt as a dependency. The capability is roughly one to two engineering days to build in-house, or free from current framework conventions. Adopting it would import long-term maintenance, upgrade, and security-review liability for perhaps fifty lines of logic — and it would block unrelated dependency upgrades.
To engineering: The pattern is correct — a compiler pass (or PrependExtensionInterface) that collects and prepends routing resources so the host app's routing config stays untouched. That is the right shape for a plugin architecture. But this implementation predates Symfony 4 and is archived; assume it does not run on our stack. Three paths, in order of preference: (1) Laravel: call loadRoutesFrom() from the package service provider, wrap in Route::middleware()/prefix() groups driven by publishable config, and add route-name prefixes to avoid collisions — this delivers the stated capability with zero third-party surface. (2) Symfony ≥5.3: implement AbstractBundle with configureRoutes(RoutingConfigurator); on older 2.x/3.x legacy, PrependExtensionInterface prepending a framework.router.resource entry is the exact behavior this bundle provides, in ~30 maintained lines we control. (3) Only if a hard constraint forces it: vendor the archived source under src/ThirdParty/, pin an exact commit, and isolate it behind a thin adapter so it can be swapped. Either way, treat this package as a design reference, not a dependency. And if someone proposes it for a Laravel service, stop them — it's a Symfony bundle and is simply not installable there.
Decision to record: reject as a dependency; capture the pattern; build the ~30–50 line native equivalent with contract tests covering route names, prefixes, middleware, ordering, and route-cache behavior on deploy. Score it reject / replace natively, not onboard.
How can I help you explore Laravel packages today?