Service Providers¶
Overview¶
Katal supports a Laravel-style Service Provider pattern for organizing application setup.
Use providers to register services/middleware/routes in one place.
Provider Class¶
import { ServiceProvider } from "katal";
export class AppServiceProvider extends ServiceProvider {
register() {
this.app.singleton("mailer", () => ({ send: () => {} }));
this.app.middleware("auth-log", {
before: (ctx) => {
ctx.state.provider = "app";
return null;
},
});
}
boot() {
this.app.group("/provider", (router) => {
class PingController {
async handle() {
return new Response("pong");
}
}
router.get("/ping", PingController as any);
});
}
}
Registration¶
const app = new Application({ port: 3000 });
app.registerProvider(AppServiceProvider);
// or app.registerProvider(new AppServiceProvider(app));
Lifecycle¶
register()runs duringapp.boot()before plugin boot stage.boot()runs duringapp.boot()after plugin boot stage.
Multiple Providers¶
app.registerProviders([
AppServiceProvider,
AuthServiceProvider,
]);
---
## See Also
- [Plugins](PLUGINS.md)
- [Dependency Injection](DI.md)
- [Application & Router](CORE.md)