registerSyncServices(); $this->app->bind(WbSyncManagerInterface::class, WbSyncManager::class); $this->app->bind(WbClientInterface::class, WbClient::class); } /** * Bootstrap any application services. */ public function boot(): void { // } private function registerSyncServices(): void { $syncServices = config('wb-sync.services'); foreach ($syncServices as $serviceClass) { $this->app->singleton($serviceClass); } $this->app->singleton(WbSyncFactoryInterface::class, function ($app) use ($syncServices) { $services = array_map(function ($serviceClass) use ($app) { return $app->make($serviceClass); }, $syncServices); return new WbSyncFactory($services); }); } }