ppokatilo/services-loader
A Laravel package for loading and registering services, helping you organize service providers and bootstrap application services through a simple, configurable loader.
services.d directory and it gets loaded, instead of every new module requiring a hand-edit to config/app.php. That is the exact decision a PM faces when the roadmap starts including team-authored or third-party modules.composer.json is a reliable signal that the codebase predates Laravel 5.5 package auto-discovery and is very likely stuck on an old PHP version. That directly informs upgrade cost estimates.Adopt only under very narrow conditions:
Look elsewhere — and here "elsewhere" is mostly "the framework":
extra.laravel.providers in composer.json, or an explicit provider list in bootstrap/providers.php (Laravel 11) already solves this natively, with tests and a maintainer.php/illuminate/support constraints will likely fail resolution or force you onto unsupported versions. That is an upgrade tax with no one to fix it.Executives. This is not a purchase decision; the license is MIT and the cost is $0. The real cost is maintenance: a single-maintainer utility with no users, no release since 2016, and constraints that will block our next Laravel major. It solves a problem our framework has solved natively since 2016. Recommendation: do not add it as a dependency. If the ergonomics are genuinely useful to us, we reimplement the ~100 lines internally, own them, and test them — that is a day of engineering, not a procurement decision. Document the rejection so it isn't rediscovered in six months.
Engineering. Treat it as prior art worth thirty minutes of reading, not a dependency worth an hour of integration. The idea — discover and register service providers from a directory — maps directly onto Laravel's package auto-discovery and bootstrap/providers.php. If we want that behavior with our own guarantees, we build a thin decorator around the provider repository and add the things this package lacks: deterministic ordering, a manifest cache, an explicit allowlist of loadable paths, and tests. MIT-licensed source means we can borrow the scanning logic outright.
Framing to use in the decision log. "Rejected: unmaintained (last release 2016), no adoption (1 star, 0 dependents), functionality superseded by framework-native auto-discovery, and its file-inclusion model adds a code-execution surface we would have to own forever. Pattern noted for internal implementation if module extensibility reaches the roadmap."
How can I help you explore Laravel packages today?