/** * Register the service provider for an addon. * * @param Addon $addon */ public function register(Addon $addon) { if ($addon instanceof Module && !$addon->isEnabled() && $addon->getSlug() !== 'installer') { return; } if ($addon instanceof Extension && !$addon->isEnabled()) { return; } $provider = $addon->getServiceProvider(); if (!class_exists($provider)) { return; } $this->providers[] = $provider = $addon->newServiceProvider(); $this->bindAliases($provider); $this->bindClasses($provider); $this->bindSingletons($provider); $this->registerRoutes($provider, $addon); $this->registerOverrides($provider, $addon); $this->registerEvents($provider); $this->registerPlugins($provider); $this->registerCommands($provider); $this->registerSchedules($provider); $this->registerProviders($provider); $this->registerMiddleware($provider); $this->registerRouteMiddleware($provider); if (method_exists($provider, 'register')) { $this->application->call([$provider, 'register']); } }